xref: /petsc/src/sys/objects/version.c (revision 954e39dd482d4a65aaa0732d096962bed879d71f)
1 #include <petscsys.h>
2 /*@C
3     PetscGetVersion - Gets the PETSc version information in a string.
4 
5     Not Collective; No Fortran Support
6 
7     Input Parameter:
8 .   len - length of the string
9 
10     Output Parameter:
11 .   version - version string
12 
13     Level: developer
14 
15     Note:
16     For doing runtime checking of supported versions we recommend using `PetscGetVersionNumber()` instead of this routine.
17 
18 .seealso: `PetscGetProgramName()`, `PetscGetVersionNumber()`
19 @*/
20 
21 PetscErrorCode PetscGetVersion(char version[], size_t len)
22 {
23   PetscFunctionBegin;
24 #if (PETSC_VERSION_RELEASE == 1)
25   PetscCall(PetscSNPrintf(version, len, "Petsc Release Version %d.%d.%d, %s ", PETSC_VERSION_MAJOR, PETSC_VERSION_MINOR, PETSC_VERSION_SUBMINOR, PETSC_VERSION_DATE));
26 #else
27   PetscCall(PetscSNPrintf(version, len, "Petsc Development GIT revision: %s  GIT Date: %s", PETSC_VERSION_GIT, PETSC_VERSION_DATE_GIT));
28 #endif
29   PetscFunctionReturn(0);
30 }
31 
32 /*@C
33     PetscGetVersionNumber - Gets the PETSc version information from the library
34 
35     Not collective
36 
37     Output Parameters:
38 +   major - the major version (optional, pass NULL if not requested)
39 .   minor - the minor version (optional, pass NULL if not requested)
40 .   subminor - the subminor version (patch number)  (optional, pass NULL if not requested)
41 -   release - indicates the library is from a release, not random git repository  (optional, pass NULL if not requested)
42 
43     Level: developer
44 
45     Notes:
46     The C macros `PETSC_VERSION_MAJOR`, `PETSC_VERSION_MINOR`, `PETSC_VERSION_SUBMINOR`, `PETSC_VERSION_RELEASE` provide the information at
47     compile time. This can be used to confirm that the shared library being loaded at runtime has the appropriate version updates.
48 
49     This function can be called before `PetscInitialize()`
50 
51 .seealso: `PetscGetProgramName()`, `PetscGetVersion()`, `PetscInitialize()`
52 @*/
53 PetscErrorCode PetscGetVersionNumber(PetscInt *major, PetscInt *minor, PetscInt *subminor, PetscInt *release)
54 {
55   if (major) *major = PETSC_VERSION_MAJOR;
56   if (minor) *minor = PETSC_VERSION_MINOR;
57   if (subminor) *subminor = PETSC_VERSION_SUBMINOR;
58   if (release) *release = PETSC_VERSION_RELEASE;
59   return 0;
60 }
61