OSDN Git Service

https://sourceforge.net/tracker/?func=detail&aid=3437558&group_id=2435&atid=102435
[mingw/mingw-org-wsl.git] / Makefile.in
index 26e3fd0..47a8982 100644 (file)
@@ -1,3 +1,26 @@
+##
+# @file Makefile.in
+# @copy 2012 MinGW.org project
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+# 
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+##
 VPATH=$(srcdir)
 PACKAGE_TARNAME=@PACKAGE_TARNAME@
 PACKAGE_VERSION=@PACKAGE_VERSION@
@@ -20,13 +43,13 @@ CFLAGS=@CFLAGS@
 RANLIB=@RANLIB@
 AS=@AS@
 DLLTOOL=@DLLTOOL@
-DLLTOOL_FLAGS := --as $(AS) -k -U --dllname
+DLLTOOL_FLAGS := --as $(AS) -k --dllname
 INSTALL=@INSTALL@
 MKDIR_P=@MKDIR_P@
 
 INCLUDES=-I$(top_srcdir)/include -I$(srcdir)/include \
-  -I$(top_srcdir)/src/libcrt/include -nostdinc \
-  -iwithprefixbefore include
+  -I$(top_srcdir)/src/libcrt/include -I$(top_srcdir)/misc/src/include \
+  -nostdinc -iwithprefixbefore include
 ALL_CFLAGS=$(CFLAGS) $(INCLUDES) -DNTDDI_VERSION=0x04000000
 
 .SUFFIXES: .def.in .def
@@ -75,7 +98,7 @@ winapi_lib_DDK_LIBRARIES := $(addprefix lib,$(winapi_DDK_DEF:.def=.a))
 winapi_lib_DIRECTX_LIBRARIES := $(addprefix lib,$(winapi_DIRECTX_DEF:.def=.a))
 winapi_lib_DIRECTX_DINPUT_LIBRARIES := $(addprefix lib,$(winapi_DIRECTX_DINPUT_DEF:.def=.a))
 winapi_mri_LIBRARIES := $(addprefix lib,$(winapi_MRI:.mri=.a))
-winapi_lib_EXTRA_LIBRARIES := libuuid.a libscrnsave.a libscrnsavw.a liblargeint.a libdmoguids.a libdxguid.a libstrmiids.a
+winapi_lib_EXTRA_LIBRARIES := libuuid.a libscrnsave.a libscrnsavw.a liblargeint.a libdmoguids.a libdxguid.a libdxerr8.a libdxerr9.a libstrmiids.a
 
 lib_LIBRARIES := $(mingwrt_lib_LIBRARIES) $(winapi_lib_LIBRARIES) \
   $(winapi_lib_EXTRA_LIBRARIES) $(winapi_mri_LIBRARIES) \
@@ -92,8 +115,10 @@ crt0_SOURCES := \
   $(SRCDIR)/CRT_fp8.c \
   $(SRCDIR)/CRT_fp10.c \
   $(SRCDIR)/txtmode.c \
-  $(SRCDIR)/binmode.c
+  $(SRCDIR)/binmode.c \
+  $(SRCDIR)/ofmt_stub.s
 crt0_OBJECTS := $(crt0_SOURCES:.c=.o) $(SRCDIR)/crt2.o $(SRCDIR)/dllcrt2.o
+crt0_OBJECTS := $(crt0_OBJECTS:.s=.o)
 
 SRCDIR := src/libcrt/crt
 mingwm10_dll_SOURCES := \
@@ -114,7 +139,7 @@ mold_SOURCES := \
   $(SRCDIR)/wscmpi.c
 mold_OBJECTS := $(mode_SOURCES:.c=.o)
 
-SRCDIR := gpl/profile
+SRCDIR := misc/gpl/profile
 gcrt0_SOURCES := $(SRCDIR)/gcrt0.c
 gcrt0_OBJECTS := $(SRCDIR)/gcrt1.o $(SRCDIR)/gcrt2.o
 
@@ -132,21 +157,26 @@ libscrnsave_a_OBJECTS := $(libscrnsave_a_SOURCES:.c=.o)
 scrnsave_o_CFLAGS := -UUNICODE
 
 libscrnsavw_a_SOURCES := src/libscrnsave/scrnsave.c
-libscrnsavw_a_OBJECTS := src/libscrnsave/srcnsavw.o
+libscrnsavw_a_OBJECTS := src/libscrnsave/scrnsavw.o
 scrnsavw_o_CFLAGS := -DUNICODE
 
 liblargeint_a_SOURCES := src/liblargeint/largeint.c
 liblargeint_a_OBJECTS := $(liblargeint_a_SOURCES:.c=.o)
 
-libdmoguids_a_SOURCES := src/libdmoguids/dmoguids.c
+libdmoguids_a_SOURCES := misc/src/libdmoguids/dmoguids.c
 libdmoguids_a_OBJECTS := $(libdmoguids_a_SOURCES:.c=.o)
 
-libdxguid_a_SOURCES := src/libdxguid/dxguid.c
+libdxguid_a_SOURCES := misc/src/libdxguid/dxguid.c
 libdxguid_a_OBJECTS := $(libdxguid_a_SOURCES:.c=.o)
 
-libstrmiids_a_SOURCES := src/libstrmiids/strmiids.c
+libstrmiids_a_SOURCES := misc/src/libstrmiids/strmiids.c
 libstrmiids_a_OBJECTS := $(libstrmiids_a_SOURCES:.c=.o)
 
+libws2_32_a_SOURCES := src/libws2_32/ws2_32.c
+libws2_32_a_OBJECTS := $(libws2_32_a_SOURCES:.c=.o)
+
+extra_OBJECTS := $(libws2_32_a_OBJECTS) src/libcrt/crt/ofmt_stub.o
+
 msvcrt_DEF = \
   msvcrt.def msvcr70.def msvcr71.def msvcr80.def msvcr90.def msvcr100.def \
   msvcrtd.def msvcr70d.def msvcr71d.def msvcr80d.def msvcr90d.def msvcr100d.def
@@ -263,7 +293,7 @@ fenv_SOURCES := \
   $(SRCDIR)/feraiseexcept.c \
   $(SRCDIR)/fesetround.c
 
-SRCDIR := src/libcrt/gdtoa
+SRCDIR := misc/src/libcrt/gdtoa
 gdtoa_SOURCES := \
   $(SRCDIR)/g__fmt.c \
   $(SRCDIR)/gethex.c \
@@ -297,6 +327,7 @@ inttypes_SOURCES := \
   $(SRCDIR)/wcstoumax.c
 
 SRCDIR := src/libcrt/math
+MSRCDIR := misc/src/libcrt/math
 math_SOURCES := \
   $(SRCDIR)/acosf.c \
   $(SRCDIR)/acosh.c \
@@ -315,9 +346,9 @@ math_SOURCES := \
   $(SRCDIR)/atanhf.c \
   $(SRCDIR)/atanhl.c \
   $(SRCDIR)/atanl.c \
-  $(SRCDIR)/cbrt.c \
-  $(SRCDIR)/cbrtf.c \
-  $(SRCDIR)/cbrtl.c \
+  $(MSRCDIR)/cbrt.c \
+  $(MSRCDIR)/cbrtf.c \
+  $(MSRCDIR)/cbrtl.c \
   $(SRCDIR)/ceilf.S \
   $(SRCDIR)/ceill.S \
   $(SRCDIR)/copysign.S \
@@ -325,9 +356,9 @@ math_SOURCES := \
   $(SRCDIR)/copysignl.S \
   $(SRCDIR)/cosf.S \
   $(SRCDIR)/coshf.c \
-  $(SRCDIR)/coshl.c \
+  $(MSRCDIR)/coshl.c \
   $(SRCDIR)/cosl.S \
-  $(SRCDIR)/erfl.c \
+  $(MSRCDIR)/erfl.c \
   $(SRCDIR)/exp2.S \
   $(SRCDIR)/exp2f.S \
   $(SRCDIR)/exp2l.S \
@@ -362,10 +393,10 @@ math_SOURCES := \
   $(SRCDIR)/fpclassifyf.c \
   $(SRCDIR)/fpclassifyl.c \
   $(SRCDIR)/frexpf.c \
-  $(SRCDIR)/frexpl.S \
+  $(MSRCDIR)/frexpl.S \
   $(SRCDIR)/fucom.c \
   $(SRCDIR)/hypotf.c \
-  $(SRCDIR)/hypotl.c \
+  $(MSRCDIR)/hypotl.c \
   $(SRCDIR)/ilogb.S \
   $(SRCDIR)/ilogbf.S \
   $(SRCDIR)/ilogbl.S \
@@ -374,9 +405,9 @@ math_SOURCES := \
   $(SRCDIR)/isnanl.c \
   $(SRCDIR)/ldexpf.c \
   $(SRCDIR)/ldexpl.c \
-  $(SRCDIR)/lgamma.c \
-  $(SRCDIR)/lgammaf.c \
-  $(SRCDIR)/lgammal.c \
+  $(MSRCDIR)/lgamma.c \
+  $(MSRCDIR)/lgammaf.c \
+  $(MSRCDIR)/lgammal.c \
   $(SRCDIR)/llrint.c \
   $(SRCDIR)/llrintf.c \
   $(SRCDIR)/llrintl.c \
@@ -396,7 +427,9 @@ math_SOURCES := \
   $(SRCDIR)/lrint.c \
   $(SRCDIR)/lrintf.c \
   $(SRCDIR)/lrintl.c \
-  $(SRCDIR)/lround_generic.c \
+  $(SRCDIR)/lround.c \
+  $(SRCDIR)/lroundl.c \
+  $(SRCDIR)/lroundf.c \
   $(SRCDIR)/modff.c \
   $(SRCDIR)/modfl.c \
   $(SRCDIR)/nearbyint.S \
@@ -406,12 +439,12 @@ math_SOURCES := \
   $(SRCDIR)/nextafterl.c \
   $(SRCDIR)/nexttoward.c \
   $(SRCDIR)/nexttowardf.c \
-  $(SRCDIR)/pow.c \
+  $(MSRCDIR)/pow.c \
   $(SRCDIR)/powf.c \
-  $(SRCDIR)/powi.c \
-  $(SRCDIR)/powif.c \
-  $(SRCDIR)/powil.c \
-  $(SRCDIR)/powl.c \
+  $(MSRCDIR)/powi.c \
+  $(MSRCDIR)/powif.c \
+  $(MSRCDIR)/powil.c \
+  $(MSRCDIR)/powl.c \
   $(SRCDIR)/remainder.S \
   $(SRCDIR)/remainderf.S \
   $(SRCDIR)/remainderl.S \
@@ -421,28 +454,30 @@ math_SOURCES := \
   $(SRCDIR)/rint.c \
   $(SRCDIR)/rintf.c \
   $(SRCDIR)/rintl.c \
-  $(SRCDIR)/round_generic.c \
-  $(SRCDIR)/s_erf.c \
+  $(SRCDIR)/round.c \
+  $(SRCDIR)/roundf.c \
+  $(SRCDIR)/roundl.c \
+  $(MSRCDIR)/s_erf.c \
   $(SRCDIR)/scalbn.S \
   $(SRCDIR)/scalbnf.S \
   $(SRCDIR)/scalbnl.S \
-  $(SRCDIR)/sf_erf.c \
+  $(MSRCDIR)/sf_erf.c \
   $(SRCDIR)/signbit.c \
   $(SRCDIR)/signbitf.c \
   $(SRCDIR)/signbitl.c \
   $(SRCDIR)/sinf.S \
   $(SRCDIR)/sinhf.c \
-  $(SRCDIR)/sinhl.c \
+  $(MSRCDIR)/sinhl.c \
   $(SRCDIR)/sinl.S \
   $(SRCDIR)/sqrtf.c \
   $(SRCDIR)/sqrtl.c \
   $(SRCDIR)/tanf.S \
   $(SRCDIR)/tanhf.c \
-  $(SRCDIR)/tanhl.c \
+  $(MSRCDIR)/tanhl.c \
   $(SRCDIR)/tanl.S \
-  $(SRCDIR)/tgamma.c \
-  $(SRCDIR)/tgammaf.c \
-  $(SRCDIR)/tgammal.c \
+  $(MSRCDIR)/tgamma.c \
+  $(MSRCDIR)/tgammaf.c \
+  $(MSRCDIR)/tgammal.c \
   $(SRCDIR)/trunc.c \
   $(SRCDIR)/truncf.c \
   $(SRCDIR)/truncl.c
@@ -460,11 +495,11 @@ SRCDIR := src/libcrt/posix/unistd
 posix_unistd_SOURCES := $(SRCDIR)/ftruncate.c $(SRCDIR)/usleep.c
 posix_SOURCES := $(posix_libgen_SOURCES) $(posix_unistd_SOURCES)
 
-SRCDIR := src/libcrt/profile
+SRCDIR := misc/src/libcrt/profile
 profile_SOURCES := \
   $(SRCDIR)/gmon.c \
   $(SRCDIR)/mcount.c \
-  gpl/profile/profil.c \
+  misc/gpl/profile/profil.c \
 libgmon_a_SOURCES := $(profile_SOURCES)
 libgmon_a_OBJECTS := $(libgmon_a_SOURCES:.c=.o)
 
@@ -476,6 +511,7 @@ search_SOURCES := \
   $(SRCDIR)/twalk.c
 
 SRCDIR := src/libcrt/stdio
+MSRCDIR := misc/src/libcrt/stdio
 stdio_SOURCES := \
   $(SRCDIR)/btowc.c \
   $(SRCDIR)/fopen64.c \
@@ -483,7 +519,7 @@ stdio_SOURCES := \
   $(SRCDIR)/fseeko64.c \
   $(SRCDIR)/ftello64.c \
   $(SRCDIR)/lseek64.c \
-  $(SRCDIR)/pformat.c \
+  $(MSRCDIR)/pformat.c \
   $(SRCDIR)/printf.c \
   $(SRCDIR)/snprintf.c \
   $(SRCDIR)/snwprintf.c \
@@ -544,7 +580,7 @@ libmingwex_a_SOURCES := \
   $(ctype_SOURCES) \
   $(fenv_SOURCES) \
   $(gdtoa_SOURCES) \
-  $(inittypes_SOURCES) \
+  $(inttypes_SOURCES) \
   $(math_SOURCES) \
   $(misc_SOURCES) \
   $(posix_SOURCES) \
@@ -558,7 +594,7 @@ libmingwex_a_SOURCES := \
 libmingwex_a_OBJECTS := $(libmingwex_a_SOURCES:.c=.o)
 libmingwex_a_OBJECTS := $(libmingwex_a_OBJECTS:.S=.o)
 
-SRCDIR := src/libdinput
+SRCDIR := misc/src/libdinput
 libdinput_a_SOURCES := \
   $(SRCDIR)/dinput_joy.c \
   $(SRCDIR)/dinput_joy2.c \
@@ -567,11 +603,11 @@ libdinput_a_SOURCES := \
   $(SRCDIR)/dinput_mouse2.c
 libdinput_a_OBJECTS := $(libdinput_a_SOURCES:.c=.o)
 
-SRCDIR := src/libdxerr8
+SRCDIR := misc/src/libdxerr8
 libdxerr8_a_SOURCES := $(SRCDIR)/dxerr.c $(SRCDIR)/dxerr8.c $(SRCDIR)/dxerr8w.c
 libdxerr8_a_OBJECTS := $(libdxerr8_a_SOURCES:.c=.o)
 
-SRCDIR := src/libdxerr9
+SRCDIR := misc/src/libdxerr9
 libdxerr9_a_SOURCES := $(SRCDIR)/dxerr.c $(SRCDIR)/dxerr9.c $(SRCDIR)/dxerr9w.c
 libdxerr9_a_OBJECTS := $(libdxerr9_a_SOURCES:.c=.o)
 
@@ -585,7 +621,7 @@ ALL_SOURCES := \
   $(libdxerr8_a_SOURCES) \
   $(libdxerr9_a_SOURCES)
 
-all: $(msvcrt_DEF) $(moldname_DEF) $(lib_LIBRARIES) $(bin_LIBRARIES) $(lib_OBJECTS)
+all: $(extra_OBJECTS) $(msvcrt_DEF) $(moldname_DEF) $(lib_LIBRARIES) $(bin_LIBRARIES) $(lib_OBJECTS)
 
 $(msvcrt_DEF): lib/lib32/msvcrt.def.in
        N=`echo $@ | sed -e 's|\([a-z]*\)\([0-9]*\).*|\1|'`; \
@@ -597,10 +633,9 @@ $(msvcrt_DEF): lib/lib32/msvcrt.def.in
        $(CC) -DRUNTIME=$(basename $(notdir $@)) \
                -D__FILENAME__=$@ \
                -D__$(basename $(notdir $@))__=1 \
-               -D__MSVCRT__ -C -E -P -xc-header \
+               -C -E -P -xc-header \
                $? > $@
 
-
 $(moldname_DEF): lib/lib32/moldname.def.in
        N=`echo $@ | sed -e 's|\([a-z]*\)\([0-9]*\).*|\1|'`; \
        test "$$N" == "msvcr" && N="msvcrt"; \
@@ -612,7 +647,7 @@ $(moldname_DEF): lib/lib32/moldname.def.in
        $(CC) -DRUNTIME=$(basename $(notdir $@)) \
                -D__FILENAME__=$$F \
                -D__$(basename $(notdir $@))__=1 \
-               -D__MSVCRT__ -C -E -P -xc-header \
+               -C -E -P -xc-header \
                $? > $@
 
 SRCDIR := lib/lib32
@@ -638,15 +673,36 @@ $(notdir $(winapi_lib_DIRECTX_LIBRARIES)): $(addprefix lib/lib32/directx/,$(wina
        $(DLLTOOL) $(DLLTOOL_FLAGS) $(subst lib,,$(@:.a=.dll)) --def $(addprefix $(top_srcdir)/lib/lib32/directx/,$(subst lib,,$(@:.a=.def))) --output-lib $@
        $(RANLIB) $@
 
+libmoldname.a: moldname.def
+       @echo Making library $@ from $?.
+       DLLNAME="msvcrt.dll"; \
+       $(DLLTOOL) $(DLLTOOL_FLAGS) $${DLLNAME} -U --def $< --output-lib $@
+       $(RANLIB) $@
+
+libmoldname%.a: moldname%.def
+       @echo Making library $@ from $?.
+       V=`echo $@ | sed -e 's|lib\([a-z]*\)\([0-9]*\).*|\2|'`; \
+       DLLNAME="msvcr$${V}.dll"; \
+       $(DLLTOOL) $(DLLTOOL_FLAGS) $${DLLNAME} -U --def $< --output-lib $@
+       $(RANLIB) $@
+
 lib%.a: %.def
        @echo Making library $@ from $?.
        N=`echo $@ | sed -e 's|lib\([a-z]*\)\([0-9]*\).*|\1|'`; \
        V=`echo $@ | sed -e 's|lib\([a-z]*\)\([0-9]*\).*|\2|'`; \
        DLLNAME="$${N}$${V}.dll"; \
-       $(DLLTOOL) $(DLLTOOL_FLAGS) $${DLLNAME} --def $< --output-lib $@
+       $(DLLTOOL) $(DLLTOOL_FLAGS) $${DLLNAME} --def $< --output-lib $@ ; \
+       if [[ $${DLLNAME} = msvcrt.dll || \
+             $${DLLNAME} = msvcrtd.dll || \
+             $${DLLNAME} = msvcr70.dll || \
+             $${DLLNAME} = msvcr70d.dll || \
+             $${DLLNAME} = msvcr71.dll || \
+             $${DLLNAME} = msvcr71d.dll ]]; then \
+         $(AR) rc $@ src/libcrt/crt/ofmt_stub.o; \
+       fi
        $(RANLIB) $@
 
-lib%.a: %.o
+lib%.a: src/lib%/%.o
        @echo Making library $@ from $?.
        $(AR) rc $@ $*.o
        $(RANLIB) $@
@@ -655,14 +711,14 @@ lib%.a: %.o
        $(MKDIR_P) $(@D)
        $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) -o $@ $<
 
-SRCDIR := src/libcrt/crt
-$(SRCDIR)/crt1.o $(SRCDIR)/dllcrt1.o:
+%.o : %.s
        $(MKDIR_P) $(@D)
-       $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) -U__MSVCRT__ -D__CRTDLL__ -o $@ $<
+       $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) -o $@ $<
 
+SRCDIR := src/libcrt/crt
 $(SRCDIR)/crt2.o $(SRCDIR)/dllcrt2.o:
        $(MKDIR_P) $(@D)
-       $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) -D__MSVCRT__ -U__CRTDLL__ -o $@ $<
+       $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) -o $@ $<
 
 $(SRCDIR)/crt1.o: $(SRCDIR)/crt1.c
 $(SRCDIR)/dllcrt1.o: $(SRCDIR)/dllcrt1.c
@@ -678,14 +734,10 @@ $(libscrnsavw_a_OBJECTS): $(libscrnsavw_a_SOURCES)
        $(MKDIR_P) $(@D)
        $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $(scrnsavw_o_CFLAGS) -o $@ $<
 
-SRCDIR := gpl/profile
-$(SRCDIR)/gcrt1.o:
-       mkdir -p $(@D)
-       $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) -U__MSVCRT__ -D__CRTDLL__ -o $@ $<
-
+SRCDIR := misc/gpl/profile
 $(SRCDIR)/gcrt2.o:
        mkdir -p $(@D)
-       $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) -D__MSVCRT__ -U__CRTDLL__ -o $@ $<
+       $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) -o $@ $<
 
 $(SRCDIR)/gcrt1.o $(SRCDIR)/gcrt2.o: $(SRCDIR)/gcrt0.c
 
@@ -693,7 +745,7 @@ libmingw32.a: $(libmingw32_a_OBJECTS)
        $(AR) rc $@ $(libmingw32_a_OBJECTS)
        $(RANLIB) $@
 
-libmingwex.a: $(libmingwex_a_OBJECTS) $(winapi_lib_LIBRARIES)
+libmingwex.a: $(libmingwex_a_OBJECTS)
        $(AR) rc $@ $(libmingwex_a_OBJECTS)
        $(RANLIB) $@
 
@@ -732,14 +784,11 @@ libdinput.a libdinput8.a: $(libdinput_a_OBJECTS)
        $(AR) rc $@ $(libdinput_a_OBJECTS)
        $(RANLIB) $@
 
-$(libdinput_a_OBJECTS) \
-$(libdmoguids_a_OBJECTS) \
-$(libdxguid_a_OBJECTS) \
-$(libstrmiids_a_OBJECTS): \
-  $(libdinput_a_SOURCES) \
-  $(libdmoguids_a_SOURCES) \
-  $(libdxguid_a_SOURCES) \
-  $(libstrmiids_a_SOURCES)
+$(libdinput_a_OBJECTS) : $(libdinput_a_SOURCES)
+$(libdmoguids_a_OBJECTS) : $(libdmoguids_a_SOURCES)
+$(libdxguid_a_OBJECTS) : $(libdxguid_a_SOURCES)
+$(libstrmiids_a_OBJECTS) : $(libstrmiids_a_SOURCES)
+$(libws2_32_a_OBJECTS) : $(libws2_32_a_SOURCES)
        $(MKDIR_P) $(@D)
        $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) -o $@ $<
 
@@ -763,6 +812,14 @@ libstrmiids.a: $(libstrmiids_a_OBJECTS)
        $(AR) rc $@ $(libstrmiids_a_OBJECTS)
        $(RANLIB) $@
 
+# Note this target will override the previous global rules and give a warning
+# from the make process. It is needed due to the extra ws2_32.o object file.
+libws2_32.a: lib/lib32/ws2_32.def $(libws2_32_a_OBJECTS)
+       @echo Making library $@ from $(subst lib,,$(@:.a=.def)).
+       $(DLLTOOL) $(DLLTOOL_FLAGS) $(subst lib,,$(@:.a=.dll)) --def $(addprefix $(top_srcdir)/lib/lib32/,$(subst lib,,$(@:.a=.def))) --output-lib $@
+       $(AR) rc $@ $(libws2_32_a_OBJECTS)
+       $(RANLIB) $@
+
 _libm_dummy.c:
        @echo "static int __mingw_libm_dummy;" > _libm_dummy.c
 
@@ -778,15 +835,15 @@ mingwm10.dll: $(mingwm10_dll_OBJECTS) mingwthrd.def libmingwex.a
          -o mingwm10.dll -L .
 
 clean:
-       rm -f *.def *.s *.a _libm_dummy.c stamp*
-       rm -rf .deps/
-       find . -type f -name \*.o -delete
-       find . -type f -name \*.dll -delete
-       test ! -f "Makefile.in" && find . -type d -delete
+       rm -f *.def *.s *.o *.dll *.a _libm_dummy.c stamp*
+       rm -rf .deps/ src/ misc/
+       cd tests && $(MAKE) $@
 
 distclean: clean
        rm -f config.log config.status config.cache config.h
        rm -f core a.out *~ Makefile
+       rm -rf dist/
+       cd tests && $(MAKE) $@
 
 need-DESTDIR-compatibility := prefix bindir includedir libdir mandir
 
@@ -802,6 +859,9 @@ fail-DESTDIR-compatibility:
        try 'make install $(REJECT)=$(shell echo '$($(REJECT))' | \
        sed s,:,:$(DESTDIR),) ...' instead)
 
+check:
+       cd tests && $(MAKE) $@
+
 install-dirs: $(need-DESTDIR-compatibility)
        $(mkinstalldirs) $(DESTDIR)$(bindir)
        $(mkinstalldirs) $(DESTDIR)$(libdir)
@@ -915,7 +975,7 @@ dist-mingwrt-install: all
 
 dist-mingwrt-dll: dist-mingwrt-mkdir dist-mingwrt-install
        cd ./dist/mingwrt/installed ; \
-       tar acf ../packages/mingwrt-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)-mingw32-dll.tar.lzma bin/*.dll ;\
+       tar acf ../packages/mingwrt-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)-mingw32-dll.tar.lzma bin/*.dll
 
 dist-mingwrt-dev: dist-mingwrt-mkdir dist-mingwrt-install
        cd ./dist/mingwrt/installed ; \
@@ -934,7 +994,7 @@ dist-mingwrt-doc: dist-mingwrt-install
        tar acf ../packages/mingwrt-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)-mingw32-doc.tar.lzma share/doc/mingwrt
 
 dist-mingwrt-src:
-       cp -af $(top_srcdir) $(DESTDIR)$(prefix)
+       cp -af $(top_srcdir) $(DESTDIR)$(prefix)/mingw.org-wsl
        cd $(DESTDIR)$(prefix)/mingw.org-wsl ; \
        rm -rf .git autom4te.cache ; \
        rm -f config.log config.status config.cache config.h ; \
@@ -1053,7 +1113,7 @@ install-w32api: install-w32api-dirs
        for INC in $(addprefix $(top_srcdir)/include/gdiplus/,$(w32api_lib_GDIPLUS_INCLUDES)); do \
          $(INSTALL) $(INSTALL_FLAGS) $$INC $(DESTDIR)$(includedir)/gdiplus/ ; \
        done
-       for INC in $(addprefix $(top_srcdir)/include/GL/,$(w32api_lib_GL_INCLUDES)); do \
+       for INC in $(addprefix $(top_srcdir)/misc/include/GL/,$(w32api_lib_GL_INCLUDES)); do \
          $(INSTALL) $(INSTALL_FLAGS) $$INC $(DESTDIR)$(includedir)/GL/ ; \
        done
        for INC in $(addprefix $(top_srcdir)/include/directx/,$(w32api_lib_DIRECTX_INCLUDES)); do \
@@ -1089,7 +1149,7 @@ dist-w32api-doc: dist-w32api-install
        tar acf ../packages/w32api-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)-mingw32-doc.tar.lzma share/doc/w32api/CONTRIBUTIONS share/doc/w32api/TODO
 
 dist-w32api-src:
-       cp -af $(top_srcdir) $(DESTDIR)$(prefix)
+       cp -af $(top_srcdir) $(DESTDIR)$(prefix)/mingw.org-wsl
        cd $(DESTDIR)$(prefix)/mingw.org-wsl ; \
        rm -rf .git autom4te.cache ; \
        rm -f config.log config.status config.cache config.h ; \
@@ -1103,4 +1163,89 @@ dist-w32api-src:
        mv mingw.org-wsl w32api-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)-mingw32-src ; \
        tar acf ../packages/w32api-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)-mingw32-src.tar.lzma w32api-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)-mingw32-src
 
-dist-wsl: all dist-wsl-bin dist-wsl-dll dist-wsl-doc dist-wsl-lic dist-wsl-src
+install-wsl-dirs: $(need-DESTDIR-compatibility)
+       $(mkinstalldirs) $(DESTDIR)$(bindir)
+       $(mkinstalldirs) $(DESTDIR)$(libdir)
+       $(mkinstalldirs) $(DESTDIR)$(docdir)
+       $(mkinstalldirs) $(DESTDIR)$(includedir)
+       $(mkinstalldirs) $(DESTDIR)$(includedir)/sys
+       $(mkinstalldirs) $(DESTDIR)$(includedir)/ddk
+       $(mkinstalldirs) $(DESTDIR)$(includedir)/gdiplus
+       $(mkinstalldirs) $(DESTDIR)$(includedir)/GL
+
+install-wsl: install-wsl-dirs
+       for BIN in $(mingwrt_bin_LIBRARIES); do \
+         $(INSTALL) $(INSTALL_FLAGS) $$BIN $(DESTDIR)$(bindir)/ ; \
+       done
+       for INC in $(addprefix $(top_srcdir)/include/,$(mingwrt_lib_INCLUDES)); do \
+         $(INSTALL) $(INSTALL_FLAGS) $$INC $(DESTDIR)$(includedir)/ ; \
+       done
+       for INC in $(addprefix $(top_srcdir)/include/sys/,$(mingwrt_lib_SYS_INCLUDES)); do \
+         $(INSTALL) $(INSTALL_FLAGS) $$INC $(DESTDIR)$(includedir)/sys/ ; \
+       done
+       for INC in $(addprefix $(top_srcdir)/include/,$(w32api_lib_INCLUDES)); do \
+         $(INSTALL) $(INSTALL_FLAGS) $$INC $(DESTDIR)$(includedir)/ ; \
+       done
+       for INC in $(addprefix $(top_srcdir)/include/ddk/,$(w32api_lib_DDK_INCLUDES)); do \
+         $(INSTALL) $(INSTALL_FLAGS) $$INC $(DESTDIR)$(includedir)/ddk/ ; \
+       done
+       for INC in $(addprefix $(top_srcdir)/include/gdiplus/,$(w32api_lib_GDIPLUS_INCLUDES)); do \
+         $(INSTALL) $(INSTALL_FLAGS) $$INC $(DESTDIR)$(includedir)/gdiplus/ ; \
+       done
+       for INC in $(addprefix $(top_srcdir)/misc/include/GL/,$(w32api_lib_GL_INCLUDES)); do \
+         $(INSTALL) $(INSTALL_FLAGS) $$INC $(DESTDIR)$(includedir)/GL/ ; \
+       done
+       for INC in $(addprefix $(top_srcdir)/include/directx/,$(w32api_lib_DIRECTX_INCLUDES)); do \
+         $(INSTALL) $(INSTALL_FLAGS) $$INC $(DESTDIR)$(includedir) ; \
+       done
+       for LIB in $(mingwrt_lib_LIBRARIES) $(w32api_lib_LIBRARIES); do \
+         $(INSTALL) $(INSTALL_FLAGS) $$LIB $(DESTDIR)$(libdir)/ ; \
+       done
+       for OBJ in $(mingwrt_lib_OBJECTS); do \
+         $(INSTALL) $(INSTALL_FLAGS) $$OBJ $(DESTDIR)$(libdir)/ ; \
+       done
+       cp -af $(top_srcdir)/LICENSE $(DESTDIR)$(docdir)
+       cp -af $(top_srcdir)/README $(DESTDIR)$(docdir)
+       cp -af $(top_srcdir)/doc/historical $(DESTDIR)$(docdir)
+
+dist-wsl:
+       $(MAKE) prefix=./dist/wsl/installed _dist-wsl-all_
+
+_dist-wsl-all_: all dist-wsl-dll dist-wsl-dev dist-wsl-doc dist-wsl-lic dist-wsl-src
+
+dist-wsl-mkdir:
+       $(MKDIR_P) ./dist/wsl/packages
+
+dist-wsl-install: all dist-wsl-mkdir
+       $(MAKE) prefix=./dist/wsl/installed install-wsl
+
+dist-wsl-dll: dist-wsl-install
+       cd ./dist/wsl/installed ; \
+       tar acf ../packages/mingw.org-wsl-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)-mingw32-dll.tar.lzma bin/*.dll ;
+
+dist-wsl-dev: dist-wsl-install
+       cd ./dist/wsl/installed ; \
+       tar acf ../packages/mingw.org-wsl-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)-mingw32-dev.tar.lzma include/ lib/
+
+dist-wsl-lic: dist-wsl-install
+       cd ./dist/wsl/installed ; \
+       tar acf ../packages/mingw.org-wsl-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)-mingw32-lic.tar.lzma share/doc/mingw.org-wsl/LICENSE
+
+dist-wsl-doc: dist-wsl-install
+       cd ./dist/wsl/installed ; \
+       tar acf ../packages/mingw.org-wsl-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)-mingw32-doc.tar.lzma share/doc/mingw.org-wsl/README
+
+dist-wsl-src: dist-wsl-install
+       cp -af $(top_srcdir) $(DESTDIR)$(prefix)/mingw.org-wsl
+       cd $(DESTDIR)$(prefix)/mingw.org-wsl ; \
+       rm -rf .git autom4te.cache ; \
+       rm -f config.log config.status config.cache config.h ; \
+       rm -f .gitignore core a.out Makefile ; \
+       find . -type f -name \*~ -delete ; \
+       find . -type f -name \*.log -delete ; \
+       find . -type f -name \*.bak -delete ; \
+       find . -type f -name .\*.swp -delete ; \
+       cd .. ; \
+       rm -rf mingw.org-wsl-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)-mingw32-src ; \
+       mv mingw.org-wsl mingw.org-wsl-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)-mingw32-src ; \
+       tar acf ../packages/mingw.org-wsl-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)-mingw32-src.tar.lzma mingw.org-wsl-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)-mingw32-src