summaryrefslogtreecommitdiff
path: root/src/makefiles/Makefile.win32
blob: e72cb2db0e5c1725854fae59ebc8dab246ee7048 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# 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)

AROPT = crs
DLSUFFIX = .dll

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 's;\(VERSION.*\),0 *$$;\1,'`date '+%y%j' | sed 's/^0*//'`';' \
	    -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)