diff --git a/postgresql/libpq-version-generator/CMakeLists.txt b/postgresql/libpq-version-generator/CMakeLists.txt index 125a5bfb73f3..937109b5e9c2 100644 --- a/postgresql/libpq-version-generator/CMakeLists.txt +++ b/postgresql/libpq-version-generator/CMakeLists.txt @@ -2,3 +2,10 @@ project(userver-impl-libpq-version-generator) add_executable(${PROJECT_NAME} "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp") target_link_libraries(${PROJECT_NAME} PRIVATE userver-libpq) + +option(USERVER_FORCE_PG17_LIGPQ_PATCH OFF) +if (${USERVER_FORCE_PG17_LIGPQ_PATCH}) + target_sources(${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/fix_pg17.c") + target_link_libraries(${PROJECT_NAME} INTERFACE ssl crypto) +endif() + diff --git a/postgresql/libpq-version-generator/fix_pg17.c b/postgresql/libpq-version-generator/fix_pg17.c new file mode 100644 index 000000000000..17011061b6bd --- /dev/null +++ b/postgresql/libpq-version-generator/fix_pg17.c @@ -0,0 +1,13 @@ +// hi from postgresql + +extern const char * pg_encoding_to_char_private(int); + +const char * pg_encoding_to_char(int encode){ + return pg_encoding_to_char_private(encode); +} + +extern int pg_char_to_encoding_private(const char *name); + +int pg_char_to_encoding(const char *name){ + return pg_char_to_encoding_private(name); +} diff --git a/postgresql/pq-extra/CMakeLists.txt b/postgresql/pq-extra/CMakeLists.txt index b5bd233d956a..bea31fd970ec 100644 --- a/postgresql/pq-extra/CMakeLists.txt +++ b/postgresql/pq-extra/CMakeLists.txt @@ -4,6 +4,11 @@ include(SetupPostgresqlDeps) set(PQ_EXTRA_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/pq_portal_funcs.c ${CMAKE_CURRENT_SOURCE_DIR}/pq_workaround.c) +option(USERVER_FORCE_PG17_LIGPQ_PATCH OFF) +if (${USERVER_FORCE_PG17_LIGPQ_PATCH}) + list(APPEND ${PQ_EXTRA_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/fix_pg17.c) +endif() + add_library(${PROJECT_NAME} STATIC ${PQ_EXTRA_SOURCES}) target_include_directories(${PROJECT_NAME} PUBLIC $) @@ -18,7 +23,7 @@ cmake_policy(SET CMP0067 NEW) try_compile( COMPILE_RESULT ${CMAKE_CURRENT_BINARY_DIR}/require_pq_extra SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/check_main.c ${PQ_EXTRA_SOURCES} - LINK_LIBRARIES PostgreSQLInternal + LINK_LIBRARIES PostgreSQLInternal ssl crypto OUTPUT_VARIABLE COMPILE_OUTPUT ) diff --git a/postgresql/pq-extra/fix_pg17.c b/postgresql/pq-extra/fix_pg17.c new file mode 100644 index 000000000000..17011061b6bd --- /dev/null +++ b/postgresql/pq-extra/fix_pg17.c @@ -0,0 +1,13 @@ +// hi from postgresql + +extern const char * pg_encoding_to_char_private(int); + +const char * pg_encoding_to_char(int encode){ + return pg_encoding_to_char_private(encode); +} + +extern int pg_char_to_encoding_private(const char *name); + +int pg_char_to_encoding(const char *name){ + return pg_char_to_encoding_private(name); +}