diff --git a/src/include/fmgr.h b/src/include/fmgr.h index 5314b737052..f251ac9ba2b 100644 --- a/src/include/fmgr.h +++ b/src/include/fmgr.h @@ -424,6 +424,17 @@ CppConcat(pg_finfo_,funcname) (void) \ extern int no_such_variable +/* + * Declare _PG_init/_PG_fini centrally. Historically each shared library had + * its own declaration; but now that we want to mark these PGDLLEXPORT, using + * central declarations avoids each extension having to add that. Any + * existing declarations in extensions will continue to work if fmgr.h is + * included before them, otherwise compilation for Windows will fail. + */ +extern PGDLLEXPORT void _PG_init(void); +extern PGDLLEXPORT void _PG_fini(void); + + /*------------------------------------------------------------------------- * Support for verifying backend compatibility of loaded modules * diff --git a/src/include/jit/jit.h b/src/include/jit/jit.h index d1940332094..600ddfc7539 100644 --- a/src/include/jit/jit.h +++ b/src/include/jit/jit.h @@ -63,7 +63,7 @@ typedef struct JitContext typedef struct JitProviderCallbacks JitProviderCallbacks; -extern void _PG_jit_provider_init(JitProviderCallbacks *cb); +extern PGDLLEXPORT void _PG_jit_provider_init(JitProviderCallbacks *cb); typedef void (*JitProviderInit) (JitProviderCallbacks *cb); typedef void (*JitProviderResetAfterErrorCB) (void); typedef void (*JitProviderReleaseContextCB) (JitContext *context); diff --git a/src/include/postmaster/pgarch.h b/src/include/postmaster/pgarch.h index f366a159a8e..2546e2ae883 100644 --- a/src/include/postmaster/pgarch.h +++ b/src/include/postmaster/pgarch.h @@ -63,6 +63,8 @@ typedef struct ArchiveModuleCallbacks */ typedef void (*ArchiveModuleInit) (ArchiveModuleCallbacks *cb); +extern PGDLLEXPORT void _PG_archive_module_init(ArchiveModuleCallbacks *cb); + /* * Since the logic for archiving via a shell command is in the core server * and does not need to be loaded via a shared library, it has a special diff --git a/src/include/replication/output_plugin.h b/src/include/replication/output_plugin.h index 539dc8e6974..b7d28d7045c 100644 --- a/src/include/replication/output_plugin.h +++ b/src/include/replication/output_plugin.h @@ -35,6 +35,8 @@ typedef struct OutputPluginOptions */ typedef void (*LogicalOutputPluginInit) (struct OutputPluginCallbacks *cb); +extern PGDLLEXPORT void _PG_output_plugin_init(struct OutputPluginCallbacks *cb); + /* * Callback that gets called in a user-defined plugin. ctx->private_data can * be set to some private data.