PACKAGE_VERSION := @PACKAGE_VERSION@
# Written by Keith Marshall <keithmarshall@users.sourceforge.net>
-# Copyright (C) 2014-2016, MinGW.org Project
+# Copyright (C) 2014-2020, MinGW.org Project
#
#
# Permission is hereby granted, free of charge, to any person obtaining a
mkinstalldirs = @MKDIR_P@ $(addprefix $1,$2)
LN_S = @LN_S@
-# Keep the configuration in a consistent state. Note that we assume
-# that configure has been run initially, (otherwise we wouldn't have
-# a Makefile to begin with); since this also creates config.status,
-# we may normally assume that it is already available ...
+# Include the makefile content which is common to both the mingwrt,
+# and the w32api packages; this may be included within the top level
+# source directory for each package individually, but we must also
+# be prepared to find it in their common parent directory.
#
-vpath configure ${top_srcdir}
-config.status: configure
- $(SHELL) config.status --recheck
-
-# ... in which case, updating Makefile should be a simple matter of
-# running config.status ...
-#
-vpath Makefile.in ${top_srcdir}
-requires_existing = $(if $(wildcard $1),$1,$1.missing)
-Makefile: Makefile.in configure $(call requires_existing,config.status)
- $(SHELL) config.status
- $(RM) Makefile.stub
-
-.PHONY: config.status.missing
-# ... but, in the event that this may be missing, (e.g. because it
-# has been manually removed, or removed by "make distclean"), suggest
-# running configure, and bail out.
-#
-config.status.missing:
- $(warning *** cannot execute config.status)
- $(error please run ${top_srcdir}/configure to regenerate it.)
-
-# If configure itself needs to be updated, we must run autoconf in the
-# top level source directory.
-#
-vpath %.m4 ${top_srcdir}
-vpath configure.ac ${top_srcdir}
-configure: configure.ac aclocal.m4 VERSION.m4
- cd ${top_srcdir}; autoconf
-
-${top_srcdir}/%: ${top_srcdir}/../%
- cd $(dir $@) && $(LN_S) -f ../$* .
-
-# Propagate package version, as configured, consistently throughout
-# the package build.
-#
-vpath _mingw.h.in ${top_srcdir}/include
-vpath w32api.h.in ${w32api_srcdir}/include
-
-_mingw.h w32api.h: configure.ac
-
-PACKAGE_VERSION_SCRIPT = sed \
- -e s"`$(call PACKAGE_VERSION_FORMAT,LONG,%d,$$3+1000*($$2+1000*$$1))`" \
- -e s"`$(call PACKAGE_VERSION_FORMAT,MAJOR,%7d,$$1)`" \
- -e s"`$(call PACKAGE_VERSION_FORMAT,MINOR,%7d,$$2)`" \
- -e s"`$(call PACKAGE_VERSION_FORMAT,PATCH,%7d,$$3)`"
-
-PACKAGE_VERSION_FORMAT = echo $(PACKAGE_VERSION).0.0 | awk -F. '{ \
- printf ",%%PACKAGE_VERSION_$1%%,$2,", $3; \
-}'
-
-_mingw.h w32api.h: %.h: %.h.in
- $(PACKAGE_VERSION_SCRIPT) $< > $@
+shared_include_file = $1$(if $(wildcard $1/$2),,/..)/$2
+include $(call shared_include_file,${top_srcdir},Makefile.comm)
# Capture dependencies conveyed within source files, ensuring that
# header files are taken from our working source tree, and not from
-I ${top_srcdir} -I ${top_srcdir}/profile -iwithprefixbefore include
ALL_CFLAGS = $(CFLAGS) $(DEPFLAGS) $(INCLUDES) $(NTDDI_VERSION_SPEC)
+ALL_CPPFLAGS = $(CPPFLAGS) $(DEPFLAGS) $(INCLUDES) $(NTDDI_VERSION_SPEC)
# The general case, for compiling object files from C source,
# requires a small adjustment to the default implicit rule.
$(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) -D__CRTDLL__ -o $@ $<
# ...while, for the current build case, we need an explicit mapping
-# to identify the disparately named source file.
+# to identify the disparately named source file...
#
$(addsuffix .$(OBJEXT), crt2 dllcrt2): %2.$(OBJEXT): %1.c
$(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) -o $@ $<
+# ...and for the pair of default FPU configuration selectors, we
+# need to pass the configuration specification to the compiler, when
+# compiling the common source for each of the two cases.
+#
+CRT_fp8.$(OBJEXT) CRT_fp10.$(OBJEXT): CRT_fp%.$(OBJEXT): CRT_fenv.c
+ $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) -D_CRT_FE_DFL_ENV=$* -o $@ $<
+
# The initialization hook for profiling code is inherited from Cygwin,
# where it is built as gcrt0.$(OBJEXT); we build it, unmodified, as each
# of gcrt1.$(OBJEXT) and gcrt2.$(OBJEXT), to satisfy the differing GCC
# which implements a vectored jump to the regular entry point for
# the DLL implementation of its corresponding replaced function.
#
-msvcrt_repl_prefix = __msvcrt
-msvcrt_repl_funcs = printf fprintf sprintf vprintf vfprintf vsprintf
+msvcrt_repl_prefix := __msvcrt
+msvcrt_repl_funcs := printf fprintf sprintf vprintf vfprintf vsprintf
+msvcrt_repl_funcs += free realloc
# This is kludgey, but dlltool lacks the selectivity to do the job
# well; (its --ext-prefix-alias option, which is what we would like
#
$(foreach name,moldname $(addprefix moldname,70 71),lib$(name).a) \
$(foreach name,moldname $(addprefix moldname,70 71),lib$(name)d.a): \
- strnlen.jmpstub.$(OBJEXT)
+ strnlen.jmpstub.$(OBJEXT) wcsnlen.jmpstub.$(OBJEXT)
coldname.def: %.def: ${mingwrt_srcdir}/moldname.def.in
$(CC) -C -E -P -D__FILENAME__=$@ -D__CRTDLL__ -xc-header $< > $@
$(addsuffix .def,$(all_moldname)): %.def: ${mingwrt_srcdir}/moldname.def.in
$(CC) -C -E -P -D__FILENAME__=$@ -xc-header $< > $@
-all-mingwrt-libs install-mingwrt-libs: libmingw32.a libmingwex.a
+vpath %.sx ${mingwrt_srcdir}
+all-mingwrt-libs install-mingwrt-libs: libmingw32.a libmingwex.a libmemalign.a
libmingw32.a: $(addsuffix .$(OBJEXT), CRTinit CRTglob setargv \
CRTfmode cpu_features CRT_fp10 txtmode main dllmain gccmain crtst \
tlsmcrt tlsmthread tlssup tlsthrd pseudo-reloc pseudo-reloc-list)
-libmingw32.a libmingwex.a libm.a libmingwthrd.a libgmon.a:
+libmingw32.a libmingwex.a libmemalign.a libm.a libmingwthrd.a libgmon.a:
$(AR) $(ARFLAGS) $@ $?
# Complex math objects, to be included in libmingwex.a
nearbyint nearbyintf nearbyintl nextafterf nextafterl nexttoward nexttowardf \
powf powl powi powif powil remainder remainderf remainderl remquo remquof \
remquol rint rintf rintl round roundf roundl scalbn scalbnf scalbnl signbit \
- signbitf signbitl sqrtf sqrtl tgamma tgammaf tgammal trunc truncf truncl)
+ signbitf signbitl sqrtf sqrtl tgamma tgammaf tgammal trunc truncf truncl \
+ x87cvt x87cvtf x87log x87log1p x87pow x87remquo)
# Replacement I/O functions in libmingwex.a, providing better POSIX
# compatibility than their Microsoft equivalents.
#
vpath %.c ${mingwrt_srcdir}/mingwex/stdio
-libmingwex.a: $(addsuffix .$(OBJEXT), btowc fprintf fseeko64 ofmtctl pformat \
- printf snprintf snwprintf sprintf vfprintf vfscanf vfwscanf vprintf vscanf \
- vsnprintf vsnwprintf vsprintf vsscanf vswscanf vwscanf)
+libmingwex.a: $(addsuffix .$(OBJEXT), btowc fprintf fseeki64 ftelli64 \
+ fwrite ofmtctl pformat printf snprintf sprintf vfprintf vfscanf vfwscanf \
+ vprintf vscanf vsnprintf vsprintf vsscanf vswscanf vwscanf)
# pformat.$(OBJEXT) needs an explicit build rule, since we need to
# specify an additional header file path.
$(addsuffix fmt.$(OBJEXT),varo crto geto seto crtn getn setn): %.$(OBJEXT): ofmt.c
$(CC) -c $(ALL_CFLAGS) -D__$*__ -fno-align-functions -o $@ $<
-# Some additional miscellaneous functions, in libmingwex.a
+# Functions comprising the MinGW aligned heap management API:
#
-libmingwex.a: $(addsuffix .$(OBJEXT), mingw-aligned-malloc mingw-fseek)
-libmingwex.a: $(addsuffix .$(OBJEXT), glob getopt basename dirname nsleep)
-libmingwex.a: $(addsuffix .$(OBJEXT), mkstemp mkdtemp cryptnam)
+LIBMINGWEX_MEMALIGN := memalign-lwm memalign-base aligned-malloc
+LIBMINGWEX_MEMALIGN += aligned-realloc memalign-realloc realloc free
+
+LIBMINGWEX_MEMALIGN_OBJECTS = $(addsuffix .$(OBJEXT),$(LIBMINGWEX_MEMALIGN))
-libmingwex.a: $(addsuffix .$(OBJEXT), tdelete tfind tsearch twalk)
+$(LIBMINGWEX_MEMALIGN_OBJECTS): %.$(OBJEXT): memalign.c
+ $(CC) -c $(CFLAGS) -D__mingw_$(subst -,_,$*)_case $< -o $@
-libmingwex.a: $(addsuffix .$(OBJEXT), getdelim gettimeofday)
-libmingwex.a: $(addsuffix .$(OBJEXT), dirent wdirent dlfcn)
+libmingwex.a: $(LIBMINGWEX_MEMALIGN_OBJECTS)
+
+# Some additional miscellaneous functions, in libmingwex.a
+#
+libmingwex.a: $(addsuffix .$(OBJEXT), ftruncate getdelim gettimeofday)
+libmingwex.a: $(addsuffix .$(OBJEXT), glob getopt basename dirname nsleep)
+libmingwex.a: $(addsuffix .$(OBJEXT), clockapi clockres clockset clocktime)
+libmingwex.a: $(addsuffix .$(OBJEXT), insque remque tdelete tfind tsearch twalk)
+libmingwex.a: $(addsuffix .$(OBJEXT), dirent wdirent dlfcn strerror_r strtok_r)
+libmingwex.a: $(addsuffix .$(OBJEXT), mkstemp mkdtemp memcrypt cryptnam setenv)
vpath %.s ${mingwrt_srcdir}/mingwex
-libmingwex.a: $(addsuffix .$(OBJEXT), fwide mbrtowc mbsinit strnlen wcrtomb \
- wcstof wcstold wctob wmemchr wmemcmp wmemcpy wmemmove wmemset)
+vpath %.sx ${mingwrt_srcdir}/mingwex
+libmingwex.a: $(addsuffix .$(OBJEXT), codeset mbrconv mbrscan mbrlen)
+libmingwex.a: $(addsuffix .$(OBJEXT), mbrtowc mbsrtowcs strnlen wcharmap)
+libmingwex.a: $(addsuffix .$(OBJEXT), wcrtomb wcsrtombs wcsnlen wcstod wcstof)
+libmingwex.a: $(addsuffix .$(OBJEXT), wcstofp wcstold wctob wctrans wctype)
+libmingwex.a: $(addsuffix .$(OBJEXT), wmemchr wmemcmp wmemcpy wmemmove wmemset)
-libmingwex.a: $(addsuffix .$(OBJEXT), wctrans wctype)
+# The wcsnlen() function, enumerated above, is an adaptation of strnlen();
+# we need a specific rule to compile it, from shared source.
+#
+wcsnlen.$(OBJEXT): strnlen.sx
+ $(COMPILE.sx) -D_UNICODE $^ -o $@
+
+# Similarly, the wcstod(), wcstof(), and wcstold() functions are
+# compiled from the common wcstofp.c source file.
+#
+$(addsuffix .$(OBJEXT), wcstod wcstof wcstold): %.$(OBJEXT): wcstofp.c
+ $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) -D FUNCTION=$* -o $@ $<
# For the math sources, we support the convention that a single
# quux_generic.c source file will produce three objects: quux.o,
$(addsuffix .$(OBJEXT), llround llroundf llroundl): %.$(OBJEXT): lround_generic.c
$(CC) -c -D FUNCTION=$* $(CPPFLAGS) $(ALL_CFLAGS) -o $@ $<
+# Similarly, we may need to compile quux.o, quuxf.o, and quuxl.o
+# variants from a common quux_generic.sx assembly language file.
+#
+vpath %.sx ${mingwrt_srcdir}/mingwex/math
+$(addsuffix .$(OBJEXT), % %f %l): %_generic.sx
+ $(COMPILE.sx) -D_$*_source -o $*.$(OBJEXT) $<
+ $(COMPILE.sx) -D_$*f_source -o $*f.$(OBJEXT) $<
+ $(COMPILE.sx) -D_$*l_source -o $*l.$(OBJEXT) $<
+
+# Assembly language sources for all fmod() and remainder() object
+# code variants originate from one fmod_generic.sx.in template.
+#
+vpath fmod_generic.sx.in ${srcdir}/mingwex/math
+fmod_generic.sx remainder_generic.sx: %_generic.sx: fmod_generic.sx.in
+ sed '$($*_generic_subst)' $< > $@
+
+# fmod() variants, and remainder() variants, require differing
+# template substitutions.
+#
+fmod_generic_subst = s:%name%:$*:;s:%fprem%:fprem:
+remainder_generic_subst = s:%name%:$*:;s:%fprem%:fprem1:
+
+# Several generically implemented functions also require separate
+# assembly of associated generic back-end support routines.
+#
+x87%.$(OBJEXT): %_generic.sx
+ $(COMPILE.sx) -o $@ $<
+
# Historically, MinGW.org's libm.a has been a dummy, delivering
# nothing of value; FIXME: IMO, this sucks; it should deliver the
# non-MSVCRT.DLL math functions, as noted above.
all-mingwrt-libs install-mingwrt-libs: libm.a
libm.a: libm_dummy.$(OBJEXT)
libm_dummy.c: Makefile
- echo "static int __mingw_libm_dummy;" > $@
+ echo "int __mingw_libm_dummy;" > $@
# The mingwrt headers define a number of functions which are normally
# expected to be compiled as inline code. Each such function must also
# entry points as stubs in libmingwex.a, via the following rules:
#
sinclude Makefile.stub
-vpath jmpstub.sx ${mingwrt_srcdir}/mingwex
libstub_refnames = grep -lr '__$1.*FUNCTION *=' ${mingwrt_srcdir}
jmpstub_prerequisites := $(shell $(call libstub_refnames,JMPSTUB)/include)
libimpl_prerequisites := $(shell $(call libstub_refnames,LIBIMPL)/include)
LIB = match( $$0, ".*[ ,(:]LIB *= *"symbol, altlib ) ? altlib[1] : "mingwex"; \
OBJNAME = gensub( "_*(.*)_*", "\\1", 1, FUNCTION )".jmpstub.$$(OBJEXT)"; \
OBJNAME_CFLAGS = "-D FUNCTION="FUNCTION; \
- if( match( $$0, ".*[ ,(:]REMAPPED *= *"symbol, alias ) ) \
+ if( match( $$0, ".*[ ,(:]DLLENTRY *= *"symbol, alias ) ) \
+ OBJNAME_CFLAGS = OBJNAME_CFLAGS" -D DLLENTRY="alias[1]; \
+ else if( match( $$0, ".*[ ,(:]REMAPPED *= *"symbol, alias ) ) \
OBJNAME_CFLAGS = OBJNAME_CFLAGS" -D REMAPPED="alias[1]; \
printf fmt, LIB, OBJNAME, OBJNAME, OBJNAME_CFLAGS; \
} \
libgmon.a: $(addsuffix .$(OBJEXT), gmon mcount profil)
+# Optional DLL Generation Rules
+# -----------------------------
+#
+# The following rules are provided to accommodate optional delivery
+# of certain of the static libraries, generated as components of this
+# package, in the alternative form of DLLs, each with an accompanying
+# import library. Each such DLL should be versioned, ideally with an
+# explicitly specified version number, but we provide this fall back
+# as a catch-all default for any which is not so specified; (all such
+# version specifications should be in the "current:revision:age" form,
+# conforming to the GNU-libtool convention).
+#
+DLLVERSION = "0:0:0"
+
+# DLLVERSION must be specified for each DLL file itself, and also for
+# the associated installation and distribution rules; the appropriate
+# dependencies may be specified by use of this function macro:
+#
+optional_dll = mingwrt-$1-optdist install-$1-optional-dll $2
+
+# Generally, we should prefer to have explicit version specifications,
+# relating individually to each DLL; these are specified in VERSION.m4,
+# and propagated here via configure time substitution.
+#
+$(call optional_dll,libmingwex,@MAP_LIBMINGWEX_A_DLLVERSION@)
+
+# For convenience, we implement the DLL build rule in the form of a
+# generic pattern rule, invoked in the form of a request to build any
+# version-agnostic import library; the versioned DLL is then built as
+# a side effect of building the import library.
+#
+# Note that, in addition to the obvious dependency on the originating
+# static library, we also make this depend on configure; this ensures
+# that DLL version changes, specified in VERSION.m4, are propagated.
+#
+# Further note that we use an alternatively named reference link to
+# the originating static library, as code source for the DLL, rather
+# than the original name; this is to work around a limitation of the
+# handling of --whole-archive, by GNU-ld, which suppresses creation
+# of an exports table, in the event that the same static library is
+# named among GCC's implicit default libraries, after reverting to
+# --no-whole-archive operation.
+#
+%.dll.a: %.a configure
+ $(RM) $@; $(LN_S) -f $< tmp$<
+ $(CC) $(call a2dll,tmp$<,$(call dllname,$*)) -L. -Wl,--out-implib=$@
+ $(RM) tmp$<
+
+dllname = $1-$(dllsuffix).dll $(LIBGCC_LINK_OPTION)
+a2dll = -shared -o $2 -Wl,--whole-archive $1 -Wl,--no-whole-archive
+dllsuffix = `echo $(DLLVERSION) | awk -F: '{printf "%d",$$1-$$3}'`
+
+all-optional-dlls: all-mingwrt-optional-dlls
+all-mingwrt-optional-dlls: libmingwex.dll.a
+
+# In most optional DLL build cases, we should avoid creating any
+# unnecessary dependency on (known to be broken) -shared-libgcc
+#
+libmingwex.dll.a: LIBGCC_LINK_OPTION = -static-libgcc
+
+
# Installation Rules
# ------------------
#
$(call INSTALL_DATA,$^,${bindir})
$(if $(STRIP_DLL),$(call STRIP_DLL,$^))
+install-optional-dlls: install-mingwrt-optional-dlls
+install-mingwrt-optional-dlls: install-libmingwex-optional-dll
+install-%-optional-dll: %.dll.a bindir libdir
+ $(call INSTALL_DATA,$<,${libdir})
+ $(call INSTALL_DATA,$(call dllname,$*),${bindir})
+ $(if $(STRIP_DLL),$(call STRIP_DLL,$(call dllname,$*)))
+ $(if $(STRIP_DATA),$(call STRIP_DATA,$<))
+
# Install manpages.
#
vpath %.man ${mingwrt_srcdir}/man
+manpages = $(basename $(notdir $(wildcard $1/man/*.$2.man)))
+mancopy = $(call manpage_ref,$1,$2.man)$(eval $1: %: %.$0-recursive)
+manpage_ref = $(eval $1: export reference_manpage = $2)
+
install-man install-manpages: install-mingwrt-manpages
-mingwrt-man$(man3ext): $(addsuffix .$(man3ext),basename dirname getline getdelim)
-install-mingwrt-manpages: mandir mingwrt-man3
+mingwrt-man$(man3ext): $(call manpages,${mingwrt_srcdir},$(man3ext))
+install-mingwrt-manpages: mandir mingwrt-man$(man3ext)
mingwrt-man%:
$(call mkinstalldirs,,${man$*dir})
format_manpage = sed \
-e "s/%PAGEREF%/`echo $1 | tr a-z A-Z` $(2:.%=%) `date -r $3 +%d-%b-%Y`/"
-basename.$(man3ext): export reference_manpage = dirname.$(man3ext).man
-basename.$(man3ext): %: %.mancopy-recursive
-
-getdelim.$(man3ext): export reference_manpage = getline.$(man3ext).man
-getdelim.$(man3ext): %: %.mancopy-recursive
+manpage_copy = $(eval $1$3: $2.$3)$(call mancopy,$2.$3,$4)
+$(call manpage_copy,mingwrt-man,basename,$(man3ext),dirname.$(man3ext))
+$(call manpage_copy,mingwrt-man,getdelim,$(man3ext),getline.$(man3ext))
%.mancopy-recursive:
$(MAKE) --no-print-directory $*.mancopy
#
uninstall: uninstall-mingwrt
uninstall-bin uninstall-dll uninstall-mingwrt: uninstall-mingwrt-dll
+uninstall-optional-dlls uninstall-mingwrt: uninstall-mingwrt-optional-dlls
uninstall-mingwrt: uninstall-mingwrt-headers uninstall-mingwrt-libdir-libs
uninstall-mingwrt: uninstall-mingwrt-libdir-objects
done
$(call REMOVE_HEADERS,${includedir},${mingwrt_srcdir}/profile/*.h)
-uninstall-mingwrt-dll \
+uninstall-mingwrt-dll uninstall-mingwrt-optional-dlls \
uninstall-mingwrt-libdir-objects uninstall-mingwrt-libdir-libs: un%:
$(MAKE) --no-print-directory mkinstalldirs= \
INSTALL_DATA='cd $$2 && $(RM) $$1' $*
+# Test Suite
+# ----------
+#
+.PHONY: check-recursive
+check test tests: check-recursive
+check-recursive:
+ $(MAKE) -C tests $@
+
+
# Distribution
# ------------
#
.PHONY: dist
-dist: devdist dlldist licdist mandist srcdist
+dist: devdist dlldist licdist mandist optdist srcdist
$(RM) -r dist/mingwrt dist/w32api
mingwrt-dist-staged w32api-dist-staged: %-dist-staged:
xz -c > ../dist/$*-$(PACKAGE_RELEASE_TAG)-man.tar.xz
$(RM) -r tmp
+optdist: mingwrt-optdist
+mingwrt-optdist: mingwrt-libmingwex-optdist
+
+mingwrt-%-optdist:
+ $(RM) -r tmp
+ $(MAKE) --no-print-directory prefix=`pwd`/tmp install-strip-$*-optional-dll
+ cd tmp && tar chf - --hard-dereference bin | \
+ xz -c > ../dist/$*-$(PACKAGE_RELEASE_TAG)-dll-$(dllsuffix).tar.xz
+ cd tmp && tar chf - --hard-dereference lib | \
+ xz -c > ../dist/$*-$(PACKAGE_RELEASE_TAG)-dev.tar.xz
+ $(RM) -r tmp
+
srcdist: mingwrt-srcdist
mingwrt-srcdist: mingwrt-srcdist-dir mingwrt-srcdist-files
cd dist && tar chf - $(PACKAGE_TARNAME)-$(PACKAGE_VERSION) | \
$(RM) -r dist/$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
$(call mkinstalldirs,,dist/$(PACKAGE_TARNAME)-$(PACKAGE_VERSION))
-mingwrt-srcdist-files: mingwrt-srcdist-package-files
+mingwrt-srcdist-files: mingwrt-srcdist-common-files
mingwrt-srcdist-files: mingwrt-srcdist-testsuite-files
+mingwrt-srcdist-files: mingwrt-srcdist-package-files
mingwrt-srcdist-package-files:
(cd ${mingwrt_srcdir} && tar chf - --hard-dereference $(notdir $^)) | \
mingwrt-srcdist-package-files: $(wildcard ${mingwrt_srcdir}/*.[chs]) \
$(addprefix ${mingwrt_srcdir}/,ChangeLog CONTRIBUTORS DISCLAIMER README) \
$(wildcard ${mingwrt_srcdir}/*.def.in) $(wildcard ${mingwrt_srcdir}/config*) \
- $(addprefix ${mingwrt_srcdir}/,aclocal.m4 VERSION.m4 install-sh Makefile.in) \
- $(addprefix ${mingwrt_srcdir}/,TODO include man mingwex profile) \
- $(addprefix ${mingwrt_srcdir}/,msvcrt-xref crtdll.def) \
- $(wildcard ${mingwrt_srcdir}/*.txt)
+ $(addprefix ${mingwrt_srcdir}/,include man mingwex msvcrt-xref profile) \
+ $(addprefix ${mingwrt_srcdir}/,TODO Makefile.in crtdll.def) \
+ $(wildcard $(addprefix ${mingwrt_srcdir}/,*.sx *.txt))
mingwrt-srcdist-testsuite-files: $(wildcard ${mingwrt_srcdir}/tests/*.at)
mingwrt-srcdist-testsuite-files: $(wildcard ${mingwrt_srcdir}/tests/*.in)
chmod 644 ${htmldir}/$(notdir $@)
%.$(man3ext).pdf: %.$(man3ext)
- man -t $< | ps2pdf - > ${pdfdir}/$(notdir $@)
+ man -t $(dir $<)$< | ps2pdf - > ${pdfdir}/$(notdir $@)
chmod 644 ${pdfdir}/$(notdir $@)
html-docdist pdf-docdist: %-docdist:
$(RM) *.d *.$(OBJEXT) Makefile.stub *.libimpl
distclean-local: clean-local
- $(RM) config.log config.status libm_dummy.c
+ $(RM) config.log config.status libm_dummy.c _mingw.h w32api.h
maintainer-clean-warning:
$(warning $(MAKE) $(@:%-warning=%))
clean mostlyclean distclean maintainer-clean: %clean: %clean-local
-# Testsuite
-# ---------
-#
-.PHONY: check-recursive
-check tests: check-recursive
-check-recursive:
- $(MAKE) -C tests $@
-
# $RCSfile$: end of file