Files
postgresql/src/makefiles/Makefile.win32
Andres Freund 2473cb9ff3 autoconf: Rely on ar supporting index creation
This way we don't need RANLIB anymore, making it a bit simpler for the meson
build to generate Makefile.global for PGXS compatibility.

FreeBSD, NetBSD, OpenBSD, the only platforms where we didn't use AROPT=crs,
all have supported the 's' option for a long time.

On macOS we ran ranlib after installing a static library. This was added a
long time ago, in 58ad65ec2def. I cannot reproduce an issue in more recent
macOS versions. This is removed now.

Based on discussion with Tom, I left the 'touch' at the end of static
libraries generation, added in 826eff57c4c, in place. While it looks like
current versions of Apple's ar/ranlib don't need it, it was needed not too
long ago.

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/20221005200710.luvw5evhwf6clig6@awork3.anarazel.de
2022-10-07 11:53:39 -07:00

84 lines
2.5 KiB
Makefile

# 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)