mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-21 13:48:33 -05:00
FindPostgreSQL: extract the actual version number
The `PG_VERSION` variable can be mangled by distributions to indicate things like the name of the distro and package build numbers. However, `PG_VERSION_NUM` is new in 8.2 (2006), so keep the old extraction code around for old versions.
This commit is contained in:
@@ -175,14 +175,34 @@ if (PostgreSQL_INCLUDE_DIR)
|
||||
foreach(_PG_CONFIG_HEADER ${_PG_CONFIG_HEADERS})
|
||||
if(EXISTS "${_PG_CONFIG_HEADER}")
|
||||
file(STRINGS "${_PG_CONFIG_HEADER}" pgsql_version_str
|
||||
REGEX "^#define[\t ]+PG_VERSION[\t ]+\".*\"")
|
||||
REGEX "^#define[\t ]+PG_VERSION_NUM[\t ]+.*")
|
||||
if(pgsql_version_str)
|
||||
string(REGEX REPLACE "^#define[\t ]+PG_VERSION[\t ]+\"([^\"]*)\".*"
|
||||
"\\1" PostgreSQL_VERSION_STRING "${pgsql_version_str}")
|
||||
string(REGEX REPLACE "^#define[\t ]+PG_VERSION_NUM[\t ]+([0-9]*).*"
|
||||
"\\1" _PostgreSQL_VERSION_NUM "${pgsql_version_str}")
|
||||
break()
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
if (_PostgreSQL_VERSION_NUM)
|
||||
math(EXPR _PostgreSQL_major_version "${_PostgreSQL_VERSION_NUM} / 10000")
|
||||
math(EXPR _PostgreSQL_minor_version "${_PostgreSQL_VERSION_NUM} % 10000")
|
||||
set(PostgreSQL_VERSION_STRING "${_PostgreSQL_major_version}.${_PostgreSQL_minor_version}")
|
||||
unset(_PostgreSQL_major_version)
|
||||
unset(_PostgreSQL_minor_version)
|
||||
else ()
|
||||
foreach(_PG_CONFIG_HEADER ${_PG_CONFIG_HEADERS})
|
||||
if(EXISTS "${_PG_CONFIG_HEADER}")
|
||||
file(STRINGS "${_PG_CONFIG_HEADER}" pgsql_version_str
|
||||
REGEX "^#define[\t ]+PG_VERSION[\t ]+\".*\"")
|
||||
if(pgsql_version_str)
|
||||
string(REGEX REPLACE "^#define[\t ]+PG_VERSION[\t ]+\"([^\"]*)\".*"
|
||||
"\\1" PostgreSQL_VERSION_STRING "${pgsql_version_str}")
|
||||
break()
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
endif ()
|
||||
unset(_PostgreSQL_VERSION_NUM)
|
||||
unset(pgsql_version_str)
|
||||
endif()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user