Clean up MinGW def file generation

There were some leftovers from ancient ad-hoc ways to build on
Windows, prior to the standardization on MSVC and MinGW.  We don't
need to build a lib$(NAME)ddll.def (debug build, as opposed to
lib$(NAME)dll.def) for MinGW, since nothing uses that.  We also don't
need to build the regular .def file during distprep, since the MinGW
build environment is perfectly capable of creating that normally at
build time.

Discussion: https://www.postgresql.org/message-id/flat/0f9db9f8-47b8-a48b-6ccc-15b22b412316%402ndquadrant.com
This commit is contained in:
Peter Eisentraut 2019-10-20 10:19:13 +02:00
부모 5d3587d14b
커밋 ea9e06ac66
5개의 변경된 파일13개의 추가작업 그리고 35개의 파일을 삭제

파일 보기

@ -49,7 +49,6 @@
# installdirs-lib create installation directory $(libdir)
# uninstall-lib remove the libraries from $(libdir)
# clean-lib delete the static and shared libraries from the build dir
# maintainer-clean-lib delete .def files built for win32
#
# Typically you would add `all-lib' to the `all' target so that `make all'
# builds the libraries. In the most simple case it would look like this:
@ -374,6 +373,13 @@ DLL_DEFFILE = lib$(NAME)dll.def
$(shlib): $(OBJS) $(DLL_DEFFILE) | $(SHLIB_PREREQS)
$(CC) $(CFLAGS) -shared -static-libgcc -o $@ $(OBJS) $(DLL_DEFFILE) $(LDFLAGS) $(LDFLAGS_SL) $(SHLIB_LINK) $(LIBS) -Wl,--out-implib=$(stlib)
UC_NAME = $(shell echo $(NAME) | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
$(DLL_DEFFILE): $(SHLIB_EXPORTS)
echo 'LIBRARY LIB$(UC_NAME).dll' >$@
echo 'EXPORTS' >>$@
sed -e '/^#/d' -e 's/^\(.*[ ]\)\([0-9][0-9]*\)/ \1@ \2/' $< >>$@
endif
endif # PORTNAME == cygwin
@ -397,32 +403,6 @@ endif # PORTNAME == cygwin || PORTNAME == win32
echo 'Libs.private: $(sort $(filter-out -L.% -L$(top_srcdir)/%,$(filter -L%,$(LDFLAGS) $(SHLIB_LINK)))) $(filter-out $(PKG_CONFIG_REQUIRES_PRIVATE:lib%=-l%),$(filter -l%,$(SHLIB_LINK)))' >>$@
# We need several not-quite-identical variants of .DEF files to build
# DLLs for Windows. These are made from the single source file
# exports.txt. Since we can't assume that Windows boxes will have
# sed, the .DEF files are always built and included in distribution
# tarballs.
ifneq (,$(SHLIB_EXPORTS))
distprep: lib$(NAME)dll.def lib$(NAME)ddll.def
UC_NAME = $(shell echo $(NAME) | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
lib$(NAME)dll.def: $(SHLIB_EXPORTS)
echo '; DEF file for Makefile.shlib (MinGW)' >$@
echo 'LIBRARY LIB$(UC_NAME).dll' >>$@
echo 'EXPORTS' >>$@
sed -e '/^#/d' -e 's/^\(.*[ ]\)\([0-9][0-9]*\)/ \1@ \2/' $< >>$@
lib$(NAME)ddll.def: $(SHLIB_EXPORTS)
echo '; DEF file for Makefile.shlib (MinGW)' >$@
echo 'LIBRARY LIB$(UC_NAME)D.dll' >>$@
echo 'EXPORTS' >>$@
sed -e '/^#/d' -e 's/^\(.*[ ]\)\([0-9][0-9]*\)/ \1@ \2/' $< >>$@
endif # SHLIB_EXPORTS
##
## INSTALL
##
@ -505,8 +485,6 @@ endif # no soname
.PHONY: clean-lib
clean-lib:
rm -f $(shlib) $(shlib_bare) $(shlib_major) $(stlib) $(exports_file) lib$(NAME).pc
ifneq (,$(SHLIB_EXPORTS))
maintainer-clean-lib:
rm -f lib$(NAME)dll.def lib$(NAME)ddll.def
ifneq (,$(DLL_DEFFILE))
rm -f $(DLL_DEFFILE)
endif

파일 보기

@ -54,4 +54,4 @@ uninstall: uninstall-lib
clean distclean: clean-lib
rm -f $(OBJS)
maintainer-clean: distclean maintainer-clean-lib
maintainer-clean: distclean

파일 보기

@ -57,4 +57,4 @@ uninstall: uninstall-lib
clean distclean: clean-lib
rm -f $(OBJS)
maintainer-clean: distclean maintainer-clean-lib
maintainer-clean: distclean

파일 보기

@ -44,4 +44,4 @@ uninstall: uninstall-lib
clean distclean: clean-lib
rm -f $(OBJS)
maintainer-clean: distclean maintainer-clean-lib
maintainer-clean: distclean

파일 보기

@ -139,6 +139,6 @@ clean distclean: clean-lib
# Remove files we (may have) symlinked in from other places
rm -f encnames.c wchar.c
maintainer-clean: distclean maintainer-clean-lib
maintainer-clean: distclean
$(MAKE) -C test $@
rm -f libpq-dist.rc