Changes to fix/improve the dynamic loading on NT
authorMarc G. Fournier
Tue, 9 Mar 1999 13:39:15 +0000 (13:39 +0000)
committerMarc G. Fournier
Tue, 9 Mar 1999 13:39:15 +0000 (13:39 +0000)
From: Horak Daniel 

src/backend/commands/trigger.c
src/backend/executor/spi.c
src/include/c.h
src/include/commands/trigger.h
src/include/executor/spi.h
src/makefiles/Makefile.win

index f23180bfd356800e305b7a872e48f773da05a8fe..1a06065da0e8d6a679ffc25b2cf2be96ac9f9627 100644 (file)
@@ -35,7 +35,7 @@
 #include "utils/acl.h"
 #endif
 
-TriggerData *CurrentTriggerData = NULL;
+DLLIMPORT TriggerData *CurrentTriggerData = NULL;
 
 void       RelationBuildTriggers(Relation relation);
 void       FreeTriggerDesc(Relation relation);
index 03b9edf332380fa90409cd3daf61145aebc1541b..519d119bdcaa3e44722a90c14e056b55e43b4906 100644 (file)
@@ -3,7 +3,7 @@
  * spi.c
  *             Server Programming Interface
  *
- * $Id: spi.c,v 1.34 1999/02/13 23:15:30 momjian Exp $
+ * $Id: spi.c,v 1.35 1999/03/09 13:39:00 scrappy Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -19,9 +19,9 @@ static _SPI_connection *_SPI_current = NULL;
 static int _SPI_connected = -1;
 static int _SPI_curid = -1;
 
-uint32     SPI_processed = 0;
-SPITupleTable *SPI_tuptable;
-int            SPI_result;
+DLLIMPORT uint32   SPI_processed = 0;
+DLLIMPORT SPITupleTable *SPI_tuptable;
+DLLIMPORT int          SPI_result;
 
 static int _SPI_execute(char *src, int tcount, _SPI_plan *plan);
 static int _SPI_pquery(QueryDesc *queryDesc, EState *state, int tcount);
index 9c7d823ea8834321a63e8887a42c32f731670f16..b73396f92fca9f60f5844839de49d326ae7b6c2b 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: c.h,v 1.51 1999/02/13 23:20:44 momjian Exp $
+ * $Id: c.h,v 1.52 1999/03/09 13:39:01 scrappy Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include 
 #endif
 
+#ifdef __CYGWIN32__
+#include 
+#endif
+
 /* ----------------------------------------------------------------
  *             Section 1:  bool, true, false, TRUE, FALSE
  * ----------------------------------------------------------------
@@ -829,6 +833,20 @@ extern char *form(const char *fmt,...);
 #define COPY_CMD       "cp"
 #define SEP_CHAR       '/'
 
+/* defines for dynamic linking on Win32 platform */
+#ifdef __CYGWIN32__
+#if __GNUC__ && ! defined (__declspec)
+#error You need egcs 1.1 or newer for compiling!
+#endif
+#ifdef BUILDING_DLL
+#define DLLIMPORT __declspec (dllexport)
+#else /* not BUILDING_DLL */
+#define DLLIMPORT __declspec (dllimport)
+#endif
+#else /* not CYGWIN */
+#define DLLIMPORT
+#endif
+
 /* Provide prototypes for routines not present in a particular machine's
  * standard C library.  It'd be better to put these in config.h, but
  * in config.h we haven't yet included anything that defines size_t...
index f96221f6e6a6b08be41479a1df1a7debb2e5d147..89e13188ea94eade39f50eedb38b0be29b885141 100644 (file)
@@ -26,7 +26,7 @@ typedef struct TriggerData
    Trigger    *tg_trigger;
 } TriggerData;
 
-extern TriggerData *CurrentTriggerData;
+extern DLLIMPORT TriggerData *CurrentTriggerData;
 
 #define TRIGGER_EVENT_INSERT           0x00000000
 #define TRIGGER_EVENT_DELETE           0x00000001
index cc72cddc903d1bc5f0c3e90136116964454d6c7e..104bf24aac4e904e63568e1b28b9526458d5c3cb 100644 (file)
@@ -66,9 +66,9 @@ typedef struct
 #define SPI_OK_UPDATE          9
 #define SPI_OK_CURSOR          10
 
-extern uint32 SPI_processed;
-extern SPITupleTable *SPI_tuptable;
-extern int SPI_result;
+extern DLLIMPORT uint32 SPI_processed;
+extern DLLIMPORT SPITupleTable *SPI_tuptable;
+extern DLLIMPORT int   SPI_result;
 
 extern int SPI_connect(void);
 extern int SPI_finish(void);
index 44b1369aa81b369fe71ec0f3b9879847453f0ffd..b73f1f2d090c298a2911b9554c68709a0e7bbea0 100644 (file)
@@ -13,3 +13,8 @@ SHLIB_LINK=$(DLLLIBS)
    $(DLLTOOL) --export-all --output-def $*.def $<
    $(DLLWRAP) -o $@ --def $*.def $< $(SRCDIR)/utils/dllinit.o $(DLLLIBS)
    rm -f $*.def
+
+curdir:=$(shell pwd)
+ifeq ($(findstring backend,$(curdir)), backend)
+CFLAGS+= -DBUILDING_DLL=1
+endif