xref: /petsc/src/sys/objects/version.c (revision 9371c9d470a9602b6d10a8bf50c9b2280a79e45a)
127710113SBarry Smith #include <petscsys.h>
227710113SBarry Smith /*@C
327710113SBarry Smith     PetscGetVersion - Gets the PETSc version information in a string.
427710113SBarry Smith 
527710113SBarry Smith     Input Parameter:
627710113SBarry Smith .   len - length of the string
727710113SBarry Smith 
827710113SBarry Smith     Output Parameter:
927710113SBarry Smith .   version - version string
1027710113SBarry Smith 
1127710113SBarry Smith     Level: developer
1227710113SBarry Smith 
1327710113SBarry Smith     Fortran Note:
1427710113SBarry Smith     This routine is not supported in Fortran.
1527710113SBarry Smith 
168cf9f3d7SBarry Smith     For doing runtime checking off supported versions we recommend using PetscGetVersionNumber() instead of this routine.
178cf9f3d7SBarry Smith 
18db781477SPatrick Sanan .seealso: `PetscGetProgramName()`, `PetscGetVersionNumber()`
1927710113SBarry Smith 
2027710113SBarry Smith @*/
2127710113SBarry Smith 
22*9371c9d4SSatish Balay PetscErrorCode PetscGetVersion(char version[], size_t len) {
238cf9f3d7SBarry Smith   PetscFunctionBegin;
2427710113SBarry Smith #if (PETSC_VERSION_RELEASE == 1)
259566063dSJacob Faibussowitsch   PetscCall(PetscSNPrintf(version, len, "Petsc Release Version %d.%d.%d, %s ", PETSC_VERSION_MAJOR, PETSC_VERSION_MINOR, PETSC_VERSION_SUBMINOR, PETSC_VERSION_DATE));
2627710113SBarry Smith #else
279566063dSJacob Faibussowitsch   PetscCall(PetscSNPrintf(version, len, "Petsc Development GIT revision: %s  GIT Date: %s", PETSC_VERSION_GIT, PETSC_VERSION_DATE_GIT));
2827710113SBarry Smith #endif
2927710113SBarry Smith   PetscFunctionReturn(0);
3027710113SBarry Smith }
3127710113SBarry Smith 
325f309d01SBarry Smith /*@C
335f309d01SBarry Smith     PetscGetVersionNumber - Gets the PETSc version information from the library
345f309d01SBarry Smith 
355f309d01SBarry Smith     Not collective
365f309d01SBarry Smith 
37d8d19677SJose E. Roman     Output Parameters:
385f309d01SBarry Smith +   major - the major version (optional, pass NULL if not requested)
395f309d01SBarry Smith .   minor - the minor version (optional, pass NULL if not requested)
405f309d01SBarry Smith .   subminor - the subminor version (patch number)  (optional, pass NULL if not requested)
415f309d01SBarry Smith -   release - indicates the library is from a release, not random git repository  (optional, pass NULL if not requested)
425f309d01SBarry Smith 
435f309d01SBarry Smith     Level: developer
445f309d01SBarry Smith 
4595452b02SPatrick Sanan     Notes:
4695452b02SPatrick Sanan     The C macros PETSC_VERSION_MAJOR, PETSC_VERSION_MINOR, PETSC_VERSION_SUBMINOR, PETSC_VERSION_RELEASE provide the information at
475f309d01SBarry Smith        compile time. This can be used to confirm that the shared library being loaded at runtime has the appropriate version updates.
485f309d01SBarry Smith 
498cf9f3d7SBarry Smith        This function can be called before PetscInitialize()
508cf9f3d7SBarry Smith 
51db781477SPatrick Sanan .seealso: `PetscGetProgramName()`, `PetscGetVersion()`, `PetscInitialize()`
525f309d01SBarry Smith 
535f309d01SBarry Smith @*/
54*9371c9d4SSatish Balay PetscErrorCode PetscGetVersionNumber(PetscInt *major, PetscInt *minor, PetscInt *subminor, PetscInt *release) {
555f309d01SBarry Smith   if (major) *major = PETSC_VERSION_MAJOR;
565f309d01SBarry Smith   if (minor) *minor = PETSC_VERSION_MINOR;
575f309d01SBarry Smith   if (subminor) *subminor = PETSC_VERSION_SUBMINOR;
585f309d01SBarry Smith   if (release) *release = PETSC_VERSION_RELEASE;
598cf9f3d7SBarry Smith   return 0;
605f309d01SBarry Smith }
61