summaryrefslogtreecommitdiffstats
path: root/src/makefiles/Makefile.win32
diff options
context:
space:
mode:
Diffstat (limited to 'src/makefiles/Makefile.win32')
-rw-r--r--src/makefiles/Makefile.win3283
1 files changed, 83 insertions, 0 deletions
diff --git a/src/makefiles/Makefile.win32 b/src/makefiles/Makefile.win32
new file mode 100644
index 0000000..dc1aafa
--- /dev/null
+++ b/src/makefiles/Makefile.win32
@@ -0,0 +1,83 @@
+# src/makefiles/Makefile.win32
+
+ifdef PGXS
+BE_DLLLIBS= -L$(libdir) -lpostgres
+override CPPFLAGS+= -I$(includedir_server)/port/win32
+else
+BE_DLLLIBS= -L$(top_builddir)/src/backend -lpostgres
+override CPPFLAGS+="-I$(top_srcdir)/src/include/port/win32"
+endif
+
+override CPPFLAGS += -DWIN32_STACK_RLIMIT=$(WIN32_STACK_RLIMIT)
+
+ifneq (,$(findstring backend,$(subdir)))
+ifeq (,$(findstring conversion_procs,$(subdir)))
+ifeq (,$(findstring libpqwalreceiver,$(subdir)))
+ifeq (,$(findstring replication/pgoutput,$(subdir)))
+ifeq (,$(findstring snowball,$(subdir)))
+override CPPFLAGS+= -DBUILDING_DLL
+endif
+endif
+endif
+endif
+endif
+
+ifneq (,$(findstring src/common,$(subdir)))
+override CPPFLAGS+= -DBUILDING_DLL
+endif
+
+ifneq (,$(findstring src/port,$(subdir)))
+override CPPFLAGS+= -DBUILDING_DLL
+endif
+
+ifneq (,$(findstring timezone,$(subdir)))
+override CPPFLAGS+= -DBUILDING_DLL
+endif
+
+ifneq (,$(findstring ecpg/ecpglib,$(subdir)))
+override CPPFLAGS+= -DBUILDING_DLL
+endif
+
+# required by Python headers
+ifneq (,$(findstring src/pl/plpython,$(subdir)))
+override CPPFLAGS+= -DUSE_DL_IMPORT
+endif
+
+# it is better to install shared-libraries anyway?
+# may be overridden with make MAKE_DLL=false install
+ifndef MAKE_DLL
+MAKE_DLL = true
+endif
+
+
+# Build rules to add versioninfo resources to win32 binaries
+
+WIN32RES += win32ver.o
+PGFTYPE = $(if $(shlib),VFT_DLL,VFT_APP)
+ifneq (,$(PGAPPICON))
+PGICOSTR = $(subst /,\/,IDI_ICON ICON \"$(top_builddir)/src/port/$(PGAPPICON).ico\")
+endif
+
+# We do not install src/port/win32ver.rc, its content being specific to
+# PostgreSQL Global Development Group software. Any module can ship a
+# win32ver.rc or furnish a rule for generating one. Set $(PGFILEDESC) to
+# signal win32ver.rc availability to the dll build rule below.
+ifndef PGXS
+win32ver.rc: $(top_srcdir)/src/port/win32ver.rc
+ sed -e 's;FILEDESC;$(PGFILEDESC);' \
+ -e 's;VFT_APP;$(PGFTYPE);' \
+ -e 's;_ICO_;$(PGICOSTR);' \
+ -e '/_INTERNAL_NAME_/$(if $(shlib),s;_INTERNAL_NAME_;"$(basename $(shlib))";,d)' \
+ -e '/_ORIGINAL_NAME_/$(if $(shlib),s;_ORIGINAL_NAME_;"$(shlib)";,d)' \
+ $< >$@
+
+# Depend on Makefile.global to force rebuild on re-run of configure.
+win32ver.rc: $(top_builddir)/src/Makefile.global
+endif
+
+win32ver.o: win32ver.rc
+ $(WINDRES) -i $< -o $@ --include-dir=$(top_builddir)/src/include --include-dir=$(srcdir)
+
+# Rule for building a shared library from a single .o file
+%.dll: %.o $(if $(PGFILEDESC),$(WIN32RES))
+ $(CC) $(CFLAGS) -shared -static-libgcc -o $@ $^ -Wl,--export-all-symbols $(LDFLAGS) $(LDFLAGS_SL) $(BE_DLLLIBS)