FindPostgreSQL: Fix for pg_config in multilib configurations.
Some platforms, Fedora 20 and RHEL 7 in particular, will have multiple pg_config_${arch}.h files all included by the top level pg_config.h. This checks all of the available pg_config*.h headers for version information.
This commit is contained in:
parent
5d7ce7a488
commit
741f29cc00
|
@ -145,12 +145,22 @@ find_library( PostgreSQL_LIBRARY
|
||||||
)
|
)
|
||||||
get_filename_component(PostgreSQL_LIBRARY_DIR ${PostgreSQL_LIBRARY} PATH)
|
get_filename_component(PostgreSQL_LIBRARY_DIR ${PostgreSQL_LIBRARY} PATH)
|
||||||
|
|
||||||
if (PostgreSQL_INCLUDE_DIR AND EXISTS "${PostgreSQL_INCLUDE_DIR}/pg_config.h")
|
if (PostgreSQL_INCLUDE_DIR)
|
||||||
file(STRINGS "${PostgreSQL_INCLUDE_DIR}/pg_config.h" pgsql_version_str
|
# Some platforms include multiple pg_config.hs for multi-lib configurations
|
||||||
REGEX "^#define[\t ]+PG_VERSION[\t ]+\".*\"")
|
# This is a temporary workaround. A better solution would be to compile
|
||||||
|
# a dummy c file and extract the value of the symbol.
|
||||||
string(REGEX REPLACE "^#define[\t ]+PG_VERSION[\t ]+\"([^\"]*)\".*" "\\1"
|
file(GLOB _PG_CONFIG_HEADERS "${PostgreSQL_INCLUDE_DIR}/pg_config*.h")
|
||||||
PostgreSQL_VERSION_STRING "${pgsql_version_str}")
|
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()
|
||||||
unset(pgsql_version_str)
|
unset(pgsql_version_str)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue