From d8870f53dd1563015cd621ad9fd333964f243d1b Mon Sep 17 00:00:00 2001
From: Paul Zimmermann <Paul.Zimmermann@inria.fr>
Date: Thu, 20 Jun 2024 15:27:07 +0200
Subject: [PATCH] removed build.vc12, build.vc14 and build.vc15

(Brian Gladman only maintains build.vs)
---
 Makefile.am                                   |    2 +-
 build.vc12/Makefile.am                        |    7 -
 build.vc12/assembler/Makefile.am              |    3 -
 build.vc12/assembler/a_win32a_mulredc.asm     |  181 ---
 build.vc12/assembler/a_win32a_redc.asm        |  133 --
 build.vc12/assembler/a_win32p_mulredc.asm     |  148 --
 build.vc12/assembler/a_win32p_redc.asm        |  145 --
 build.vc12/assembler/a_x64_mulredc.asm        |  237 ---
 build.vc12/assembler/a_x64_redc.asm           |  161 ---
 build.vc12/assembler/mulredc.asm              |    8 -
 build.vc12/assembler/mulredc.h                |   32 -
 build.vc12/assembler/redc.asm                 |    7 -
 build.vc12/assembler/test_mulredc.c           |  303 ----
 build.vc12/bench_mulredc/Makefile.am          |    1 -
 .../bench_mulredc/bench_mulredc.vcxproj       |  170 ---
 .../bench_mulredc.vcxproj.filters             |   23 -
 build.vc12/config.h                           |  246 ----
 build.vc12/ecm.sln                            |   58 -
 build.vc12/ecm/Makefile.am                    |    1 -
 build.vc12/ecm/ecm.vcxproj                    |  237 ---
 build.vc12/ecm/ecm.vcxproj.filters            |   71 -
 build.vc12/ecm_gpu.sln                        |   39 -
 build.vc12/ecm_gpu/Makefile.am                |    1 -
 build.vc12/ecm_gpu/ecm_gpu.vcxproj            |  279 ----
 build.vc12/ecm_gpu/ecm_gpu.vcxproj.filters    |   75 -
 build.vc12/file_copy.bat                      |    4 -
 build.vc12/gen_ecm_h.bat                      |   13 -
 build.vc12/getopt.c                           | 1281 -----------------
 build.vc12/getopt.h                           |  182 ---
 build.vc12/getrusage.c                        |   71 -
 build.vc12/getrusage.h                        |   46 -
 build.vc12/gettimeofday.c                     |   39 -
 build.vc12/gettimeofday.h                     |   34 -
 build.vc12/libecm/Makefile.am                 |    2 -
 build.vc12/libecm/libecm.vcxproj              |  266 ----
 build.vc12/libecm/libecm.vcxproj.filters      |  193 ---
 build.vc12/libecm_gpu/Makefile.am             |    1 -
 build.vc12/libecm_gpu/libecm_gpu.vcxproj      |  330 -----
 .../libecm_gpu/libecm_gpu.vcxproj.filters     |  190 ---
 build.vc12/mp_lib.props                       |   20 -
 build.vc12/out_copy_rename.bat                |   31 -
 build.vc12/prebuild.bat                       |    3 -
 build.vc12/python.bat                         |    2 -
 build.vc12/readme.txt                         |  172 ---
 build.vc12/tests.py                           |  150 --
 build.vc12/tune/Makefile.am                   |    1 -
 build.vc12/tune/tune.vcxproj                  |  161 ---
 build.vc12/tune/tune.vcxproj.filters          |  109 --
 build.vc12/vacopy.c                           |    8 -
 build.vc12/vsyasm.props                       |   27 -
 build.vc12/vsyasm.targets                     |  108 --
 build.vc12/vsyasm.xml                         |  283 ----
 build.vc14/Makefile.am                        |    7 -
 build.vc14/assembler/Makefile.am              |    3 -
 build.vc14/assembler/a_win32a_redc.asm        |  133 --
 build.vc14/assembler/a_win32p_mulredc.asm     |  148 --
 build.vc14/assembler/a_win32p_redc.asm        |  145 --
 build.vc14/assembler/a_x64_mulredc.asm        |  237 ---
 build.vc14/assembler/a_x64_redc.asm           |  161 ---
 build.vc14/assembler/mulredc.asm              |    8 -
 build.vc14/assembler/mulredc.h                |   32 -
 build.vc14/assembler/redc.asm                 |    7 -
 build.vc14/assembler/test_mulredc.c           |  303 ----
 build.vc14/bench_mulredc/Makefile.am          |    1 -
 .../bench_mulredc/bench_mulredc.vcxproj       |  170 ---
 .../bench_mulredc.vcxproj.filters             |   23 -
 build.vc14/config.h                           |  246 ----
 build.vc14/ecm.sln                            |   70 -
 build.vc14/ecm/Makefile.am                    |    1 -
 build.vc14/ecm/ecm.vcxproj                    |  239 ---
 build.vc14/ecm/ecm.vcxproj.filters            |   74 -
 build.vc14/ecm_gpu.sln                        |   39 -
 build.vc14/ecm_gpu/Makefile.am                |    1 -
 build.vc14/ecm_gpu/ecm.vcxproj.filters        |   68 -
 build.vc14/ecm_gpu/ecm_gpu.vcxproj            |  286 ----
 build.vc14/ecm_gpu/ecm_gpu.vcxproj.filters    |   78 -
 build.vc14/file_copy.bat                      |    4 -
 build.vc14/gen_ecm_h.bat                      |   13 -
 build.vc14/getopt.c                           | 1281 -----------------
 build.vc14/getopt.h                           |  182 ---
 build.vc14/getrusage.c                        |   71 -
 build.vc14/getrusage.h                        |   46 -
 build.vc14/gettimeofday.c                     |   39 -
 build.vc14/gettimeofday.h                     |   34 -
 build.vc14/libecm/Makefile.am                 |    1 -
 build.vc14/libecm/libecm.vcxproj              |  245 ----
 build.vc14/libecm/libecm.vcxproj.filters      |  190 ---
 build.vc14/libecm_gpu/Makefile.am             |    1 -
 build.vc14/libecm_gpu/libecm_gpu.vcxproj      |  315 ----
 .../libecm_gpu/libecm_gpu.vcxproj.filters     |  193 ---
 build.vc14/mp_lib.props                       |   20 -
 build.vc14/multiecm/Makefile.am               |    1 -
 build.vc14/multiecm/multiecm.vcxproj          |  238 ---
 build.vc14/multiecm/multiecm.vcxproj.filters  |   71 -
 build.vc14/out_copy_rename.bat                |   31 -
 build.vc14/prebuild.bat                       |    3 -
 build.vc14/python.bat                         |    2 -
 build.vc14/readme.txt                         |  173 ---
 build.vc14/tests.py                           |  150 --
 build.vc14/tune/Makefile.am                   |    1 -
 build.vc14/tune/tune.vcxproj                  |  161 ---
 build.vc14/tune/tune.vcxproj.filters          |  109 --
 build.vc14/vacopy.c                           |    8 -
 build.vc14/vsyasm.props                       |   27 -
 build.vc14/vsyasm.targets                     |  108 --
 build.vc14/vsyasm.xml                         |  283 ----
 build.vc15/Makefile.am                        |    7 -
 build.vc15/assembler/Makefile.am              |    3 -
 build.vc15/assembler/a_win32a_redc.asm        |  133 --
 build.vc15/assembler/a_win32p_mulredc.asm     |  148 --
 build.vc15/assembler/a_win32p_redc.asm        |  145 --
 build.vc15/assembler/a_x64_mulredc.asm        |  237 ---
 build.vc15/assembler/a_x64_redc.asm           |  161 ---
 build.vc15/assembler/mulredc.asm              |    8 -
 build.vc15/assembler/mulredc.h                |   32 -
 build.vc15/assembler/redc.asm                 |    7 -
 build.vc15/assembler/test_mulredc.c           |  303 ----
 build.vc15/bench_mulredc/Makefile.am          |    1 -
 .../bench_mulredc/bench_mulredc.vcxproj       |  171 ---
 .../bench_mulredc.vcxproj.filters             |   23 -
 build.vc15/config.h                           |  246 ----
 build.vc15/ecm.sln                            |   70 -
 build.vc15/ecm/Makefile.am                    |    1 -
 build.vc15/ecm/ecm.vcxproj                    |  240 ---
 build.vc15/ecm/ecm.vcxproj.filters            |   74 -
 build.vc15/ecm_gpu.sln                        |   39 -
 build.vc15/ecm_gpu/Makefile.am                |    1 -
 build.vc15/ecm_gpu/ecm.vcxproj.filters        |   68 -
 build.vc15/ecm_gpu/ecm_gpu.vcxproj            |  280 ----
 build.vc15/ecm_gpu/ecm_gpu.vcxproj.filters    |   78 -
 build.vc15/file_copy.bat                      |    4 -
 build.vc15/gen_ecm_h.bat                      |   13 -
 build.vc15/getopt.c                           | 1281 -----------------
 build.vc15/getopt.h                           |  182 ---
 build.vc15/getrusage.c                        |   71 -
 build.vc15/getrusage.h                        |   46 -
 build.vc15/gettimeofday.c                     |   39 -
 build.vc15/gettimeofday.h                     |   34 -
 build.vc15/libecm/Makefile.am                 |    1 -
 build.vc15/libecm/libecm.vcxproj              |  253 ----
 build.vc15/libecm/libecm.vcxproj.filters      |  190 ---
 build.vc15/libecm_gpu/Makefile.am             |    1 -
 build.vc15/libecm_gpu/libecm_gpu.vcxproj      |  311 ----
 .../libecm_gpu/libecm_gpu.vcxproj.filters     |  193 ---
 build.vc15/mp_lib.props                       |   27 -
 build.vc15/multiecm/Makefile.am               |    1 -
 build.vc15/multiecm/multiecm.vcxproj          |  238 ---
 build.vc15/multiecm/multiecm.vcxproj.filters  |   71 -
 build.vc15/out_copy_rename.bat                |   31 -
 build.vc15/prebuild.bat                       |    3 -
 build.vc15/python.bat                         |    2 -
 build.vc15/readme.txt                         |  177 ---
 build.vc15/test.ecm.save                      |    1 -
 build.vc15/tests.py                           |  150 --
 build.vc15/tune.txt                           |   11 -
 build.vc15/tune/Makefile.am                   |    1 -
 build.vc15/tune/tune.vcxproj                  |  164 ---
 build.vc15/tune/tune.vcxproj.filters          |  109 --
 build.vc15/vacopy.c                           |    8 -
 build.vc15/vsyasm.props                       |   27 -
 build.vc15/vsyasm.targets                     |  110 --
 build.vc15/vsyasm.xml                         |  283 ----
 162 files changed, 1 insertion(+), 19284 deletions(-)
 delete mode 100644 build.vc12/Makefile.am
 delete mode 100644 build.vc12/assembler/Makefile.am
 delete mode 100644 build.vc12/assembler/a_win32a_mulredc.asm
 delete mode 100644 build.vc12/assembler/a_win32a_redc.asm
 delete mode 100644 build.vc12/assembler/a_win32p_mulredc.asm
 delete mode 100644 build.vc12/assembler/a_win32p_redc.asm
 delete mode 100644 build.vc12/assembler/a_x64_mulredc.asm
 delete mode 100644 build.vc12/assembler/a_x64_redc.asm
 delete mode 100644 build.vc12/assembler/mulredc.asm
 delete mode 100644 build.vc12/assembler/mulredc.h
 delete mode 100644 build.vc12/assembler/redc.asm
 delete mode 100644 build.vc12/assembler/test_mulredc.c
 delete mode 100644 build.vc12/bench_mulredc/Makefile.am
 delete mode 100644 build.vc12/bench_mulredc/bench_mulredc.vcxproj
 delete mode 100644 build.vc12/bench_mulredc/bench_mulredc.vcxproj.filters
 delete mode 100644 build.vc12/config.h
 delete mode 100644 build.vc12/ecm.sln
 delete mode 100644 build.vc12/ecm/Makefile.am
 delete mode 100644 build.vc12/ecm/ecm.vcxproj
 delete mode 100644 build.vc12/ecm/ecm.vcxproj.filters
 delete mode 100644 build.vc12/ecm_gpu.sln
 delete mode 100644 build.vc12/ecm_gpu/Makefile.am
 delete mode 100644 build.vc12/ecm_gpu/ecm_gpu.vcxproj
 delete mode 100644 build.vc12/ecm_gpu/ecm_gpu.vcxproj.filters
 delete mode 100644 build.vc12/file_copy.bat
 delete mode 100644 build.vc12/gen_ecm_h.bat
 delete mode 100644 build.vc12/getopt.c
 delete mode 100644 build.vc12/getopt.h
 delete mode 100644 build.vc12/getrusage.c
 delete mode 100644 build.vc12/getrusage.h
 delete mode 100644 build.vc12/gettimeofday.c
 delete mode 100644 build.vc12/gettimeofday.h
 delete mode 100644 build.vc12/libecm/Makefile.am
 delete mode 100644 build.vc12/libecm/libecm.vcxproj
 delete mode 100644 build.vc12/libecm/libecm.vcxproj.filters
 delete mode 100644 build.vc12/libecm_gpu/Makefile.am
 delete mode 100644 build.vc12/libecm_gpu/libecm_gpu.vcxproj
 delete mode 100644 build.vc12/libecm_gpu/libecm_gpu.vcxproj.filters
 delete mode 100644 build.vc12/mp_lib.props
 delete mode 100644 build.vc12/out_copy_rename.bat
 delete mode 100644 build.vc12/prebuild.bat
 delete mode 100644 build.vc12/python.bat
 delete mode 100644 build.vc12/readme.txt
 delete mode 100644 build.vc12/tests.py
 delete mode 100644 build.vc12/tune/Makefile.am
 delete mode 100644 build.vc12/tune/tune.vcxproj
 delete mode 100644 build.vc12/tune/tune.vcxproj.filters
 delete mode 100644 build.vc12/vacopy.c
 delete mode 100644 build.vc12/vsyasm.props
 delete mode 100644 build.vc12/vsyasm.targets
 delete mode 100644 build.vc12/vsyasm.xml
 delete mode 100644 build.vc14/Makefile.am
 delete mode 100644 build.vc14/assembler/Makefile.am
 delete mode 100644 build.vc14/assembler/a_win32a_redc.asm
 delete mode 100644 build.vc14/assembler/a_win32p_mulredc.asm
 delete mode 100644 build.vc14/assembler/a_win32p_redc.asm
 delete mode 100644 build.vc14/assembler/a_x64_mulredc.asm
 delete mode 100644 build.vc14/assembler/a_x64_redc.asm
 delete mode 100644 build.vc14/assembler/mulredc.asm
 delete mode 100644 build.vc14/assembler/mulredc.h
 delete mode 100644 build.vc14/assembler/redc.asm
 delete mode 100644 build.vc14/assembler/test_mulredc.c
 delete mode 100644 build.vc14/bench_mulredc/Makefile.am
 delete mode 100644 build.vc14/bench_mulredc/bench_mulredc.vcxproj
 delete mode 100644 build.vc14/bench_mulredc/bench_mulredc.vcxproj.filters
 delete mode 100644 build.vc14/config.h
 delete mode 100644 build.vc14/ecm.sln
 delete mode 100644 build.vc14/ecm/Makefile.am
 delete mode 100644 build.vc14/ecm/ecm.vcxproj
 delete mode 100644 build.vc14/ecm/ecm.vcxproj.filters
 delete mode 100644 build.vc14/ecm_gpu.sln
 delete mode 100644 build.vc14/ecm_gpu/Makefile.am
 delete mode 100644 build.vc14/ecm_gpu/ecm.vcxproj.filters
 delete mode 100644 build.vc14/ecm_gpu/ecm_gpu.vcxproj
 delete mode 100644 build.vc14/ecm_gpu/ecm_gpu.vcxproj.filters
 delete mode 100644 build.vc14/file_copy.bat
 delete mode 100644 build.vc14/gen_ecm_h.bat
 delete mode 100644 build.vc14/getopt.c
 delete mode 100644 build.vc14/getopt.h
 delete mode 100644 build.vc14/getrusage.c
 delete mode 100644 build.vc14/getrusage.h
 delete mode 100644 build.vc14/gettimeofday.c
 delete mode 100644 build.vc14/gettimeofday.h
 delete mode 100644 build.vc14/libecm/Makefile.am
 delete mode 100644 build.vc14/libecm/libecm.vcxproj
 delete mode 100644 build.vc14/libecm/libecm.vcxproj.filters
 delete mode 100644 build.vc14/libecm_gpu/Makefile.am
 delete mode 100644 build.vc14/libecm_gpu/libecm_gpu.vcxproj
 delete mode 100644 build.vc14/libecm_gpu/libecm_gpu.vcxproj.filters
 delete mode 100644 build.vc14/mp_lib.props
 delete mode 100644 build.vc14/multiecm/Makefile.am
 delete mode 100644 build.vc14/multiecm/multiecm.vcxproj
 delete mode 100644 build.vc14/multiecm/multiecm.vcxproj.filters
 delete mode 100644 build.vc14/out_copy_rename.bat
 delete mode 100644 build.vc14/prebuild.bat
 delete mode 100644 build.vc14/python.bat
 delete mode 100644 build.vc14/readme.txt
 delete mode 100644 build.vc14/tests.py
 delete mode 100644 build.vc14/tune/Makefile.am
 delete mode 100644 build.vc14/tune/tune.vcxproj
 delete mode 100644 build.vc14/tune/tune.vcxproj.filters
 delete mode 100644 build.vc14/vacopy.c
 delete mode 100644 build.vc14/vsyasm.props
 delete mode 100644 build.vc14/vsyasm.targets
 delete mode 100644 build.vc14/vsyasm.xml
 delete mode 100644 build.vc15/Makefile.am
 delete mode 100644 build.vc15/assembler/Makefile.am
 delete mode 100644 build.vc15/assembler/a_win32a_redc.asm
 delete mode 100644 build.vc15/assembler/a_win32p_mulredc.asm
 delete mode 100644 build.vc15/assembler/a_win32p_redc.asm
 delete mode 100644 build.vc15/assembler/a_x64_mulredc.asm
 delete mode 100644 build.vc15/assembler/a_x64_redc.asm
 delete mode 100644 build.vc15/assembler/mulredc.asm
 delete mode 100644 build.vc15/assembler/mulredc.h
 delete mode 100644 build.vc15/assembler/redc.asm
 delete mode 100644 build.vc15/assembler/test_mulredc.c
 delete mode 100644 build.vc15/bench_mulredc/Makefile.am
 delete mode 100644 build.vc15/bench_mulredc/bench_mulredc.vcxproj
 delete mode 100644 build.vc15/bench_mulredc/bench_mulredc.vcxproj.filters
 delete mode 100644 build.vc15/config.h
 delete mode 100644 build.vc15/ecm.sln
 delete mode 100644 build.vc15/ecm/Makefile.am
 delete mode 100644 build.vc15/ecm/ecm.vcxproj
 delete mode 100644 build.vc15/ecm/ecm.vcxproj.filters
 delete mode 100644 build.vc15/ecm_gpu.sln
 delete mode 100644 build.vc15/ecm_gpu/Makefile.am
 delete mode 100644 build.vc15/ecm_gpu/ecm.vcxproj.filters
 delete mode 100644 build.vc15/ecm_gpu/ecm_gpu.vcxproj
 delete mode 100644 build.vc15/ecm_gpu/ecm_gpu.vcxproj.filters
 delete mode 100644 build.vc15/file_copy.bat
 delete mode 100644 build.vc15/gen_ecm_h.bat
 delete mode 100644 build.vc15/getopt.c
 delete mode 100644 build.vc15/getopt.h
 delete mode 100644 build.vc15/getrusage.c
 delete mode 100644 build.vc15/getrusage.h
 delete mode 100644 build.vc15/gettimeofday.c
 delete mode 100644 build.vc15/gettimeofday.h
 delete mode 100644 build.vc15/libecm/Makefile.am
 delete mode 100644 build.vc15/libecm/libecm.vcxproj
 delete mode 100644 build.vc15/libecm/libecm.vcxproj.filters
 delete mode 100644 build.vc15/libecm_gpu/Makefile.am
 delete mode 100644 build.vc15/libecm_gpu/libecm_gpu.vcxproj
 delete mode 100644 build.vc15/libecm_gpu/libecm_gpu.vcxproj.filters
 delete mode 100644 build.vc15/mp_lib.props
 delete mode 100644 build.vc15/multiecm/Makefile.am
 delete mode 100644 build.vc15/multiecm/multiecm.vcxproj
 delete mode 100644 build.vc15/multiecm/multiecm.vcxproj.filters
 delete mode 100644 build.vc15/out_copy_rename.bat
 delete mode 100644 build.vc15/prebuild.bat
 delete mode 100644 build.vc15/python.bat
 delete mode 100644 build.vc15/readme.txt
 delete mode 100644 build.vc15/test.ecm.save
 delete mode 100644 build.vc15/tests.py
 delete mode 100644 build.vc15/tune.txt
 delete mode 100644 build.vc15/tune/Makefile.am
 delete mode 100644 build.vc15/tune/tune.vcxproj
 delete mode 100644 build.vc15/tune/tune.vcxproj.filters
 delete mode 100644 build.vc15/vacopy.c
 delete mode 100644 build.vc15/vsyasm.props
 delete mode 100644 build.vc15/vsyasm.targets
 delete mode 100644 build.vc15/vsyasm.xml

diff --git a/Makefile.am b/Makefile.am
index 9927fead..617d154e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -139,7 +139,7 @@ EXTRA_DIST = test.pm1 test.pp1 test.ecm README.lib INSTALL-ecm ecm.xml  \
              LucasChainGenerator/src/LucasChainGen.h \
              LucasChainGenerator/src/LCG_macros.h
 
-DIST_SUBDIRS = x86_64 powerpc64 aprtcle build.vc12
+DIST_SUBDIRS = x86_64 powerpc64 aprtcle
 
 DISTCLEANFILES = config.m4
 
diff --git a/build.vc12/Makefile.am b/build.vc12/Makefile.am
deleted file mode 100644
index d199fdfd..00000000
--- a/build.vc12/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-EXTRA_DIST = config.h ecm.sln ecm_gpu.sln file_copy.bat gen_ecm_h.bat \
-             getopt.c getopt.h getrusage.c getrusage.h gettimeofday.c \
-	     gettimeofday.h mp_lib.props out_copy_rename.bat prebuild.bat \
-	     python.bat readme.txt tests.py vacopy.c vsyasm.props \
-	     vsyasm.targets vsyasm.xml
-
-DIST_SUBDIRS = assembler ecm ecm_gpu libecm libecm_gpu tune bench_mulredc
diff --git a/build.vc12/assembler/Makefile.am b/build.vc12/assembler/Makefile.am
deleted file mode 100644
index 3b2f7d84..00000000
--- a/build.vc12/assembler/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-EXTRA_DIST = a_win32a_mulredc.asm a_win32a_redc.asm a_win32p_mulredc.asm \
-             a_win32p_redc.asm a_x64_mulredc.asm a_x64_redc.asm \
-             test_mulredc.c mulredc.h mulredc.asm redc.asm
diff --git a/build.vc12/assembler/a_win32a_mulredc.asm b/build.vc12/assembler/a_win32a_mulredc.asm
deleted file mode 100644
index baeb5e37..00000000
--- a/build.vc12/assembler/a_win32a_mulredc.asm
+++ /dev/null
@@ -1,181 +0,0 @@
-
-; Part of GMP-ECM
-;
-; mp_limb_t mulredc1(           1 limb
-;       mp_limb_t       *z,
-;       const mp_limb_t  x,
-;       const mp_limb_t  y,
-;       const mp_limb_t  m,
-;       mp_limb_t inv_m
-;   )
-;
-; mp_limb_t mulredc<limbs>(   > 1 limb
-;       mp_limb_t       *z,
-;       const mp_limb_t *x,
-;       const mp_limb_t *y,
-;       const mp_limb_t *m,
-;       mp_limb_t inv_m
-;   )
-
-%macro mseq_1   3
-	mul	    ebp
-	add	    [edi+4*%3], %2
-	mov	    %2, 0
-	adc	    %1, eax
-	mov	    eax, [esi+4*%3+8]
-	adc	    %2, edx
-%endmacro
-
-%macro mseq_2 3
-	mul	    ebp
-	add	    [edi+3*%3], %1
-	mov     %1, 0
-	adc	    %1, eax
-	mov	    eax, [esi+4*%3+8]
-	adc	    %2, edx
-%endmacro
-
-%macro  mulredc 1
-%assign limbs       %1
-%define f_name(x)   _mulredc %+ x
-
-	global	f_name(limbs)
-%ifdef	DLL
-	export	f_name(limbs)
-%endif
-
-f_name(limbs):
-	push    ebp
-	push	edi
-	push	esi
-	push	ebx
-	sub	    esp, 8*(limbs+1)
-	mov	    edi, esp
-
-%assign i 0
-%rep    2 * limbs + 1
-	mov	    dword [edi+4*i], 0
-	%assign i i + 1
-%endrep
-	mov     dword [esp+8*limbs+4], limbs
-
-;	align 32
-
-.1: mov	    eax, [esp+8*limbs+32]
-	mov	    esi, [esp+8*limbs+36]
-	mov 	eax, [eax]
-	mul	    dword [esi]
-	add	    eax, [edi]
-	mul	    dword [esp+8*limbs+44]
-	mov     ebp, eax
-	mov	    esi, [esp+8*limbs+40]
-
-	mov	    eax, [esi]
-	mul	    ebp
-	mov	    ebx, eax
-	mov 	ecx, edx
-	mov	    eax, [esi+4]
-
-%assign i 0
-%rep    limbs - 2
-    %if (i & 1)
-        mseq_1 ebx, ecx,  i
-    %else
-        mseq_1 ecx, ebx,  i
-    %endif
-    %assign i i + 1
-%endrep
-
-	mul	    ebp
-%if (limbs & 1)
-	add	    [edi+4*limbs-8], ecx
-	adc	    eax, ebx
-%else
-	add	    [edi+4*limbs-8], ebx
-	adc	    eax, ecx
-%endif
-	adc	    edx, 0
-	add	    [edi+4*limbs-4], eax
-	adc	    edx, 0
-	add	    [edi+4*limbs], edx
-	adc	    dword [edi+4*limbs+4], 0
-
-	mov	    eax, [esp+8*limbs+32]
-	mov	    ebp, [eax]
-	mov	    esi, [esp+8*limbs+36]
-	mov	    eax, [esi]
-	mul	    ebp
-	mov	    ebx, eax
-	mov	    ecx, edx
-	mov	    eax, [esi+4]
-
-%assign i 0
-%rep    limbs - 2
-    %if (i & 1)
-        mseq_1 ebx, ecx,  i
-    %else
-        mseq_1 ecx, ebx,  i
-    %endif
-    %assign i i + 1
-%endrep
-
-	mul 	ebp
-%if (limbs & 1)
-	add	    [edi+4*limbs-8], ecx
-	adc	    eax, ebx
-%else
-	add	    [edi+4*limbs-8], ebx
-	adc	    eax, ecx
-%endif
-	adc	    edx, 0
-	add	    [edi+4*limbs-4], eax
-	adc	    edx, 0
-    add     [edi+4*limbs],edx
-    adc     dword [edi+4*limbs+4], 0
-
-	add	    dword [esp+8*limbs+32], 4
-	add	    edi, 4
-	dec	    dword [esp+8*limbs+4]
-	jnz	    .1
-	mov	    ebx, [esp+8*limbs+28]
-
-%assign i 0
-%rep    limbs
-	mov	    eax, [edi+4*i]
-	mov	    [ebx+4*i], eax
-	%assign i i + 1
-%endrep
-
-	mov	    eax, [edi+4*limbs]
-	add     esp, 8*(limbs+1)
-	pop	    ebx
-	pop	    esi
-	pop	    edi
-	pop	    ebp
-	ret
-%endmacro
-
-    text
-
-    global _mulredc1
-_mulredc1:
-	mov	    eax, [esp+12]
-	mul	    dword [esp+8]
-	mov	    [esp+12], edx
-	mov	    [esp+8], eax
-	mul	    dword [esp+20]
-	mul	    dword [esp+16]
-	add	    eax, [esp+8]
-	adc	    edx, [esp+12]
-	mov	    ecx, [esp+4]
-	mov     [ecx], edx
-	adc	    eax,0
-	ret
-
-%assign i 2
-%rep    19      ; 3..20 inclusive
-    mulredc i
-    %assign i i + 1
-%endrep
-
-    end
diff --git a/build.vc12/assembler/a_win32a_redc.asm b/build.vc12/assembler/a_win32a_redc.asm
deleted file mode 100644
index 9b473071..00000000
--- a/build.vc12/assembler/a_win32a_redc.asm
+++ /dev/null
@@ -1,133 +0,0 @@
-;
-; Part of GMP-ECM
-;
-; void ecm_redc3(
-;       mp_limb_t       *z,     rdi  r8  <- rcx
-;       const mp_limb_t *x,     rsi  r9  <- rdx
-;       size_t           n,     rdx r10  <-  r8
-;       mp_limb_t        m      rcx r11  <-  r9
-;   )
-
-%macro  seq 3
-    mov     eax, [byte esi+4*%3]
-    mul     ebp
-    add     [byte edi+4*%3], %2
-    adc     %1, eax
-    mov     %2, edx
-    adc     %2, 0
-%endmacro
-
-    text
-    global _ecm_redc3
-     
-_ecm_redc3:
-	push	ebp					
-	push	edi
-	push	esi
-	push	ebx
-	sub	    esp, 16
-	mov	    ecx, [esp+44]
-	mov	    edi, [esp+36]
-	mov	    [esp], ecx
-    cmp     ecx, 5
-    jae     .3		
-
-.1:	mov	    ebp, [esp+48]
-    mov     esi, [esp+40]
-	imul	ebp, [edi]				
-	mov	    [esp+36], edi
-	mov	    ecx, [esp+44]
-	xor	    ebx, ebx			
-
-.2: mov     eax, [esi]
-    add     edi, 4
-    mul     ebp			
-    add     esi, 4
-    add     eax, ebx
-    adc     edx, 0		
-    add     [edi-4], eax
-    adc     edx, 0		
-    dec     ecx			
-    mov     ebx, edx
-    jnz     .2		
-    mov	    edi, [esp+36]
-    mov     [edi], ebx
-    dec	    dword [esp]
-    lea	    edi, [edi+4]			
-    jnz     .1				
-
-	add	    esp, 16
-	pop	    ebx
-	pop	    esi
-	pop	    edi
-	pop 	ebp
-	ret
-	
-.3: mov     edx, ecx
-    dec     ecx
-    sub     edx, 2
-    neg     ecx	
-    shr     edx, 4
-    and     ecx, 15
-    mov     [esp+8], edx
-    mov     edx, ecx
-    shl     edx, 4
-    neg     ecx
-    lea    edx, [edx+ecx+.6]
-    mov	    [esp+44], ecx
-    mov	    [esp+12], edx
-
-.4:	mov     ebp, [esp+48]
-    mov     esi, [esp+40]
-    imul    ebp, [edi]                          
-    mov     [esp+36], edi                  
-    mov     ecx, [esp+44]
-    mov     edx, [esp+8]
-    mov	    [esp+4], edx
-    mov     eax, [esi]
-    lea     esi, [esi+ecx*4+4]
-    mul     ebp
-    lea     edi, [edi+ecx*4]
-    mov     ebx, edx
-    mov     edx, [esp+12]
-    test    ecx, 1
-    mov     ecx, eax
-    cmovnz  ecx, ebx
-    cmovnz  ebx, eax
-    jmp     edx
-
-    align   32
-.5:	add     edi, 64
-.6:	
-
-%assign i 0
-%rep 16
-    %if (i & 1)
-        seq     ecx, ebx,  i
-    %else
-        seq     ebx, ecx,  i
-    %endif
-    %assign i i + 1
-%endrep
-
-    dec     dword [esp+4]
-    lea     esi, [esi+64]
-    jns     .5
-
-    add     [edi+64], ecx
-    mov     edi, [esp+36]
-    adc     ebx, 0
-    mov     [edi], ebx
-    dec     dword [esp]
-    lea     edi, [edi+4]
-    jnz     .4                      
-
-    add     esp, 16
-    pop     ebx
-    pop     esi
-    pop     edi
-    pop     ebp
-    ret
-
-    end
-    
\ No newline at end of file
diff --git a/build.vc12/assembler/a_win32p_mulredc.asm b/build.vc12/assembler/a_win32p_mulredc.asm
deleted file mode 100644
index 001f7255..00000000
--- a/build.vc12/assembler/a_win32p_mulredc.asm
+++ /dev/null
@@ -1,148 +0,0 @@
-
-; Part of GMP-ECM
-;
-; mp_limb_t mulredc1(           1 limb
-;       mp_limb_t       *z,
-;       const mp_limb_t  x,
-;       const mp_limb_t  y,
-;       const mp_limb_t  m,
-;       mp_limb_t inv_m
-;   )
-;
-; mp_limb_t mulredc<limbs>(   > 1 limb
-;       mp_limb_t       *z,
-;       const mp_limb_t *x,
-;       const mp_limb_t *y,
-;       const mp_limb_t *m,
-;       mp_limb_t inv_m
-;   )
-
-%macro mseq 1
-	movd	mm1, [esi+4*%1]
-	movd	mm2, [edi+4*%1]
-	pmuludq	mm1, mm7
-	paddq	mm2, mm1
-	paddq	mm0, mm2
-	movd	[edi+4*%1], mm0
-	psrlq   mm0, 32
-%endmacro
-
-%macro  mulredc 1
-%assign limbs       %1
-%define f_name(x)   _mulredc %+ x
-
-	global	f_name(limbs)
-%ifdef	DLL
-	export	f_name(limbs)
-%endif
-
-f_name(limbs):
-	push    ebp
-	push    edi
-	push    esi
-	push    ebx
-	sub	    esp, 8*(limbs+1)
-	mov	    edi, esp
-
-%assign i 0
-%rep    2 * limbs + 1
-	mov	    dword [edi+4*i], 0
-	%assign i i + 1
-%endrep
-
-	mov	    dword [esp+8*limbs+4], limbs
-
-    align 32
-
-.1:	mov	    eax, [esp+8*limbs+32]
-	mov	    esi, [esp+8*limbs+36]
-	mov	    eax, [eax]
-	mul	    dword [esi]
-	add	    eax, [edi]
-	mul	    dword [esp+8*limbs+44]
-	mov     ebp, eax
-	mov	    esi, [esp+8*limbs+40]
-
-	pxor	mm0, mm0
-	movd	mm7, ebp
-
-%assign i 0
-%rep limbs
-    mseq i
-    %assign i i + 1
-%endrep
-
-	movd	ecx, mm0
-
-	add	    [edi+4*limbs], ecx
-	adc	    dword [edi+4*limbs+4], 0
-	mov	    eax, [esp+8*limbs+32]
-	mov	    ebp, [eax]
-	mov	    esi, [esp+8*limbs+36]
-
-	pxor	mm0, mm0
-	movd	mm7, ebp
-
-%assign i 0
-%rep limbs
-    mseq i
-    %assign i i + 1
-%endrep
-
-	movd	ecx, mm0
-    add     [edi+4*limbs], ecx
-    adc     dword [edi+4*limbs+4], 0
-	add	    dword [esp+8*limbs+32], 4
-	add	    edi, 4
-	dec	    dword [esp+8*limbs+4]
-	jnz	    .1
-
-	mov	    ebx, [esp+8*limbs+28]
-
-%assign i 0
-%rep limbs
-	mov	    eax, [edi+4*i]
-	mov	    [ebx+4*i], eax
-	%assign i i + 1
-%endrep
-	mov	    eax, [edi+4*limbs]
-	add     esp, 8*(limbs+1)
-
-	pop     ebx
-	pop     esi
-	pop     edi
-	pop     ebp
-	emms
-	ret
-%endmacro
-
-    bits    32
-	section .text
-
-	global	_mulredc1
-%ifdef	DLL
-	export	_mulredc1
-%endif
-
-_mulredc1:
-	mov	    eax, [esp+12]
-	mul	    dword [esp+8]
-	mov     [esp+12], edx
-	mov     [esp+8], eax
-	mul	    dword [esp+20]
-	mul	    dword [esp+16]
-	add	    eax, [esp+8]
-	adc	    edx, [esp+12]
-	mov	    ecx, [esp+4]
-	mov     [ecx], edx
-	adc	    eax, 0
-	ret
-
-%assign i 2
-%rep    19      ; 3..20 inclusive
-    mulredc i
-    %assign i i + 1
-%endrep
-
-    end
-
diff --git a/build.vc12/assembler/a_win32p_redc.asm b/build.vc12/assembler/a_win32p_redc.asm
deleted file mode 100644
index b94bd9f9..00000000
--- a/build.vc12/assembler/a_win32p_redc.asm
+++ /dev/null
@@ -1,145 +0,0 @@
-;
-; Part of GMP-ECM
-;
-; void ecm_redc3(
-;       mp_limb_t       *z,     rdi  r8  <- rcx
-;       const mp_limb_t *x,     rsi  r9  <- rdx
-;       size_t           n,     rdx r10  <-  r8
-;       mp_limb_t        m      rcx r11  <-  r9
-;   )
-
-%macro rloop 3
-    mov    eax, [byte esi+4*%3]
-    mul    ebp
-    add    [byte edi+4*%3], %2
-    adc    %1, eax
-    mov    %2, edx
-    adc    %2, 0
-%endmacro
-
-    bits    32
-	section .text
-
-	global	_ecm_redc3
-%ifdef	DLL
-	export	_ecm_redc3
-%endif
-
-_ecm_redc3:
-	push	ebp
-	push	edi
-	push	esi
-	push	ebx
-	sub	    esp, 16
-
-	mov	    ecx, [esp+44]
-	mov	    edi, [esp+36]
-	mov	    [esp], ecx
-    cmp     ecx, 5
-    jae     .unroll
-
-.1: mov	    ebp, [esp+48]
-    mov     esi, [esp+40]
-	imul    ebp, [edi]
-	mov	    [esp+36], edi
-	mov	    ecx, [esp+44]
-	xor	    ebx, ebx
-
-.2: mov     eax, [esi]
-	add     edi, 4
-	mul     ebp
-	add     esi, 4
-	add     eax, ebx
-    adc     edx, 0
-	add     [edi-4], eax
-	adc     edx, 0
-	dec     ecx
-	mov     ebx, edx
-	jnz     .2
-	mov	    edi, [esp+36]
-	mov     [edi], ebx
-	dec	    dword [esp]
-	lea	    edi, [edi+4]
-	jnz     .1
-
-	add	    esp, 16
-	pop	    ebx
-	pop	    esi
-	pop	    edi
-	pop	    ebp
-	ret
-
-.unroll:
-	mov     edx, ecx
-    dec     ecx
-	sub     edx, 2
-	neg     ecx
-	shr     edx, 4
-	and     ecx, 15
-	mov     [esp+8], edx
-	mov     edx, ecx
-	shl     edx, 4
-	neg     ecx
-    lea     edx, [edx+ecx*1+.loop_base]
-	mov	    [esp+44], ecx
-	mov	    [esp+12], edx
-
-.4:	mov     ebp, [esp+48]
-    mov     esi, [esp+40]
-    imul    ebp, [edi]
-    mov     [esp+36], edi
-    mov     ecx, [esp+44]
-	mov     edx, [esp+8]
-	mov	    [esp+4], edx
-    mov     eax, [esi]
-    lea     esi, [esi+ecx*4+4]
-    mul     ebp
-	lea     edi, [edi+ecx*4]
-    mov     ebx, edx
-    mov     edx, [esp+12]
-    test    ecx, 1
-    mov     ecx, eax
-	cmovnz  ecx, ebx
-    cmovnz  ebx, eax
-    jmp     edx
-
-    align  32
-.5:	add    edi, 64
-.loop_base:
-    rloop ebx, ecx,  0
-    rloop ecx, ebx,  1
-    rloop ebx, ecx,  2
-    rloop ecx, ebx,  3
-    rloop ebx, ecx,  4
-    rloop ecx, ebx,  5
-    rloop ebx, ecx,  6
-    rloop ecx, ebx,  7
-    rloop ebx, ecx,  8
-    rloop ecx, ebx,  9
-    rloop ebx, ecx, 10
-    rloop ecx, ebx, 11
-    rloop ebx, ecx, 12
-    rloop ecx, ebx, 13
-    rloop ebx, ecx, 14
-    rloop ecx, ebx, 15
-
-    dec     dword [esp+4]
-    lea     esi, [esi+64]
-    jns     .5
-
-    add     [edi+64], ecx
-    mov     edi, [esp+36]
-    adc     ebx, 0
-    mov     [edi], ebx
-    dec     dword [esp]
-    lea     edi, [edi+4]
-    jnz     .4
-
-    add     esp, 16
-    pop     ebx
-    pop     esi
-    pop     edi
-    pop     ebp
-    ret
-
-    end
diff --git a/build.vc12/assembler/a_x64_mulredc.asm b/build.vc12/assembler/a_x64_mulredc.asm
deleted file mode 100644
index 4f09d33c..00000000
--- a/build.vc12/assembler/a_x64_mulredc.asm
+++ /dev/null
@@ -1,237 +0,0 @@
-;
-; Part of GMP-ECM
-;
-; mp_limb_t mulredc1(             MSVC    1 limb
-;       mp_limb_t       *z,        rcx
-;       const mp_limb_t  x,        rdx
-;       const mp_limb_t  y,         r8
-;       const mp_limb_t  m,         r9
-;       mp_limb_t inv_m     [rsp+0x28]
-;   )
-;
-; mp_limb_t mulredc<limbs>(       MSVC  > 1 limb
-;       mp_limb_t       *z,        rcx
-;       const mp_limb_t *x,        rdx
-;       const mp_limb_t *y,         r8
-;       const mp_limb_t *m,         r9
-;       mp_limb_t inv_m     [rsp+0x28]
-;   )
-
-%macro  mseq_1 4
-	mov	    %2, rcx
-	mul	    r14
-	add	    %1, rax
-	mov	    rax, [r9+8*%3]
-	adc	    %2, rdx
-	mul	    r11
-%if %3 < %4 - 1
-	    add	    rax, %1
-	    mov     [rbp+8*(%3-1)], rax
-	    mov	    rax, [r8+8*(%3+1)]
-	    adc	    %2, rdx
-	    setc	cl
-%else
-        add     %1, rax
-	    mov	    [rbp+8*(%3-1)], %1
-	    adc     %2, rdx
-	    mov     [rbp+8*%3], %2
-	    setc	cl
-	    mov	    [rbp+8*(%3+1)], rcx
-%endif
-%endmacro
-
-%macro mseq_20 2
-	mov	    r14, [r13+r12*8]
-	mov	    rax, [r8]
-    mov	    %1, [rbp]
-	mov	    %2, [rbp+8]
-	mul	    r14
-	add	    r12, 1
-	add	    rax, %1
-	adc	    %2, rdx
-	setc	cl
-	mov 	%1, rax
-	imul	rax, r10
-	mov	    r11, rax
-	mul	    qword [r9]
-	add	    %1, rax
-	adc	    %2, rdx
-	mov	    rax, [r8+8]
-%endmacro
-
-%macro mseq_2 4
-	mov     %2, [rbp+8*(%3+1)]
-	adc	    %2, rcx
-%if %3 < %4 - 1
-	setc	cl
-%endif
-	mul	    r14
-	add	    %1, rax
-	mov	    rax, [r9+8*%3]
-	adc	    %2, rdx
-%if %3 < %4 - 1
-	adc	    cl, 0
-%else
-	setc	cl
-%endif
-	mul	    r11
-%if %3 < %4 - 1
-	    add	    rax, %1
-	    mov	    [rbp+8*(%3-1)], rax
-	    adc	    %2, rdx
-	    mov	    rax, [r8+8*(%3+1)]
-%else
-        add     %1, rax
-        mov     [rbp+8*(%3-1)], %1
-        adc     %2, rdx
-	    mov	    [rbp+8*%3],%2
-	    adc	    cl, 0
-	    mov	    [rbp+8*(%3+1)], rcx
-%endif
-%endmacro
-
-%macro store 1
-%assign i 0
-%rep %1
-    %if i == %1 - 1 && (%1 & 1)
-	    mov	    rax, [rbp+8*i]
-	    mov 	[rdi+8*i], rax
-    %elif (i & 1)
-	    mov 	[rdi+8*(i-1)], rax
-	    mov 	[rdi+8*i], rdx
-    %else
-	    mov	    rax, [rbp+8*i]
-    	mov	    rdx, [rbp+8*(i+1)]
-    %endif
-    %assign i i + 1
-%endrep
-%endmacro
-
-%macro mulredc 1
-
-%assign limbs       %1
-%define f_name(x)   mulredc %+ x
-%define stack_space 8 * (limbs + 1 + (limbs & 1))
-
-	global	f_name(limbs)
-%ifdef DLL
-	export	f_name(limbs)
-%endif
-
-    align   64
-
-PROC_FRAME	f_name(limbs)               ; SEH Frame
-    push_reg    rbp
-    push_reg    rbx
-    push_reg    rsi
-    push_reg    rdi
-    push_reg    r12
-    push_reg    r13
-    push_reg    r14
-    alloc_stack stack_space
-END_PROLOGUE
-                                        ;   *y in  r8
-	mov     rdi, rcx                    ;   *z -> rdi
-	mov	    r13, rdx                    ;   *x -> r13
-    mov     r10, [rsp+8*12+stack_space] ; invm -> r10
-                                        ;   *m in  r9
-	mov     r14, [r13]
-	mov	    rax, [r8]
-	xor     rcx, rcx
-	lea	    rbp, [rsp]
-	mov     r12, rcx
-	mul     qword r14
-	add	    r12, 1
-	mov 	rsi, rax
-	mov	    rbx, rdx
-	imul	rax, r10
-	mov	    r11, rax
-	mul	    qword [r9]
-	add	    rsi, rax
-	mov	    rax, [r8+8]
-	adc	    rbx, rdx
-	setc	cl
-
-%assign j 1
-%rep    limbs - 1
-%if (j & 1)
-    mseq_1  rbx, rsi, j, limbs
-%else
-    mseq_1  rsi, rbx, j, limbs
-%endif
-   %assign j j + 1
-%endrep
-
-    align 32
-.1:
-
-%assign j 1
-%if (limbs & 1)
-    mseq_20 rsi, rbx
-    %rep    limbs - 1
-        %if (j & 1)
-            mseq_2  rbx, rsi, j, limbs
-        %else
-            mseq_2  rsi, rbx, j, limbs
-        %endif
-        %assign j j + 1
-    %endrep
-%else
-    mseq_20 rbx, rsi
-    %rep    limbs - 1
-        %if (j & 1)
-            mseq_2  rsi, rbx, j, limbs
-        %else
-            mseq_2  rbx, rsi, j, limbs
-        %endif
-        %assign j j + 1
-    %endrep
-%endif
-
-	cmp     r12, limbs
-	jb	    .1
-
-    store   limbs
-
-	mov	    rax, rcx
-	add     rsp, stack_space
-	pop     r14
-	pop     r13
-	pop     r12
-	pop     rdi
-	pop     rsi
-	pop     rbx
-	pop     rbp
-	ret
-ENDPROC_FRAME
-%endmacro
-
-	bits    64
-	section .text
-
-	global	mulredc1
-%ifdef DLL
-	export	mulredc1
-%endif
-
-    align   64
-mulredc1:
-	mov	    rax, r8
-	mul	    rdx
-	mov	    r10, rax
-	mov	    r11, rdx
-	mul	    qword [rsp+0x28]
-	mul	    r9
-	add	    rax, r10
-	adc	    rdx, r11
-	mov	    [rcx], rdx
-	adc	    rax, 0
-	ret
-
-%assign i 2
-%rep    19      ; 2..20 inclusive
-    mulredc i
-    %assign i i + 1
-%endrep
-
-    end
diff --git a/build.vc12/assembler/a_x64_redc.asm b/build.vc12/assembler/a_x64_redc.asm
deleted file mode 100644
index 49a02452..00000000
--- a/build.vc12/assembler/a_x64_redc.asm
+++ /dev/null
@@ -1,161 +0,0 @@
-;
-; Part of GMP-ECM
-;
-; void ecm_redc3(
-;       mp_limb_t       *z,     rdi  r8  <- rcx
-;       const mp_limb_t *x,     rsi  r9  <- rdx
-;       size_t           n,     rdx r10  <-  r8
-;       mp_limb_t        m      rcx r11  <-  r9
-;   )
-
-%macro rloop 3
-    mov     rax,[byte rsi+8*%3]
-    mul     rbp
-    add     [byte rdi+8*%3], %1
-    adc     %2, rax
-    mov     %1, rdx
-    adc     %1, 0
-%endmacro
-
-	bits 64
-	section .text
-
-	global	ecm_redc3
-%ifdef DLL
-	export	ecm_redc3
-%endif
-
-PROC_FRAME	ecm_redc3
-    push_reg    rbp
-    push_reg    rbx
-    push_reg    rsi
-    push_reg    rdi
-	alloc_stack	5*8
-END_PROLOGUE
-	mov     rdi, rcx
-	mov     rsi, rdx
-	mov     rdx, r8
-	mov     rcx, r9
-
-	mov     r8, rdi
-	mov     r9, rsi
-	mov     r10, rdx
-	mov     r11, rcx
-
-	mov	    rcx, r10
-	mov	    [rsp], rcx
-    cmp     rcx, 3
-    jae     .unroll
-
-.1: mov	    rbp, r11
-	mov     rsi, r9
-	imul    rbp, [rdi]
-	mov	    r8, rdi
-	mov	    rcx, r10
-	xor	    rbx, rbx
-
-.2: mov     rax, [rsi]
-	add     rdi, 8
-	mul     rbp
-	add     rsi, 8
-	add     rax, rbx
-    adc     rdx, 0
-	add     [rdi-8], rax
-	adc     rdx, 0
-	dec     rcx
-	mov     rbx, rdx
-	jnz     .2
-	mov	    rdi, r8
-	mov     [rdi], rbx
-	dec	    qword [rsp]
-	lea	    rdi, [rdi+8]
-	jnz     .1
-
-    add     rsp, 5*8
-    pop     rdi
-    pop     rsi
-    pop     rbx
-    pop     rbp
-    ret
-
-.unroll:
-	mov     rdx, rcx
-    dec     rcx
-	sub     rdx, 2
-	neg     rcx
-	shr     rdx, 4
-	and     rcx, 15
-	mov     [rsp+16], rdx
-	mov     rdx, rcx
-	shl     rdx, 4
-    lea     r10, [.loop_base wrt rip]
-    add     rdx, r10
-    lea     rdx, [rdx+rcx*4]
-	add	    rdx, rcx
-	neg     rcx
-	mov	    r10, rcx
-	mov	    [rsp+24], rdx
-
-.4:	mov     rbp, r11
-    mov     rsi, r9
-    imul    rbp, [rdi]
-    mov     r8, rdi
-    mov     rcx, r10
-	mov     rdx, [rsp+16]
-	mov	    [rsp+8], rdx
-
-    mov     rax, [rsi]
-    lea     rsi, [rsi+rcx*8+8]
-    mul     rbp
-	lea     rdi, [rdi+rcx*8]
-	mov     rbx, rdx
-
-    mov     rdx, [rsp+24]
-    test    rcx, 1
-    mov     rcx, rax
-	cmovnz  rcx, rbx
-	cmovnz  rbx, rax
-	jmp     rdx
-
-    align   64
-
-.5:	add     rdi, 128
-.loop_base:
-    rloop rcx, rbx,  0
-    rloop rbx, rcx,  1
-    rloop rcx, rbx,  2
-    rloop rbx, rcx,  3
-    rloop rcx, rbx,  4
-    rloop rbx, rcx,  5
-    rloop rcx, rbx,  6
-    rloop rbx, rcx,  7
-    rloop rcx, rbx,  8
-    rloop rbx, rcx,  9
-    rloop rcx, rbx, 10
-    rloop rbx, rcx, 11
-    rloop rcx, rbx, 12
-    rloop rbx, rcx, 13
-    rloop rcx, rbx, 14
-    rloop rbx, rcx, 15
-
-    dec     qword [rsp+8]
-    lea     rsi, [rsi+128]
-    jns     .5
-
-    add     [rdi+128], rcx
-    mov     rdi, r8
-    adc     rbx, 0
-    mov     [rdi], rbx
-    dec     qword [rsp]
-    lea     rdi, [rdi+8]
-    jnz     .4
-
-    add     rsp, 5*8
-    pop     rdi
-    pop     rsi
-    pop     rbx
-    pop     rbp
-    ret
-ENDPROC_FRAME
-
-    end
diff --git a/build.vc12/assembler/mulredc.asm b/build.vc12/assembler/mulredc.asm
deleted file mode 100644
index ffe18e1c..00000000
--- a/build.vc12/assembler/mulredc.asm
+++ /dev/null
@@ -1,8 +0,0 @@
-
-%ifdef _WIN64
-%include "a_x64_mulredc.asm"
-%elifdef AMD_ASM
-%include "a_win32a_mulredc.asm"
-%else
-%include "a_win32p_mulredc.asm"
-%endif
diff --git a/build.vc12/assembler/mulredc.h b/build.vc12/assembler/mulredc.h
deleted file mode 100644
index 8902af37..00000000
--- a/build.vc12/assembler/mulredc.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef __ASM_REDC_H__
-#define __ASM_REDC_H__
-
-#include <gmp.h>
-
-extern void ecm_redc3(mp_limb_t *cp, const mp_limb_t *np, mp_size_t nn, mp_limb_t Nprim);
-
-
-/* WARNING: the size-1 version doesn't take pointers in input */
-extern mp_limb_t mulredc1(mp_limb_t *z, mp_limb_t x, mp_limb_t y, mp_limb_t m, mp_limb_t inv_m);
-
-extern mp_limb_t mulredc2(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc3(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc4(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc5(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc6(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc7(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc8(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc9(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc10(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc11(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc12(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc13(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc14(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc15(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc16(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc17(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc18(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc19(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc20(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-
-#endif
diff --git a/build.vc12/assembler/redc.asm b/build.vc12/assembler/redc.asm
deleted file mode 100644
index 1653e1ce..00000000
--- a/build.vc12/assembler/redc.asm
+++ /dev/null
@@ -1,7 +0,0 @@
-%ifdef _WIN64
-%include "a_x64_redc.asm"
-%elif AMD_ASM
-%include "a_win32a_redc.asm"
-%else
-%include "a_win32p_redc.asm"
-%endif
diff --git a/build.vc12/assembler/test_mulredc.c b/build.vc12/assembler/test_mulredc.c
deleted file mode 100644
index f95234da..00000000
--- a/build.vc12/assembler/test_mulredc.c
+++ /dev/null
@@ -1,303 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-
-#include <gmp.h>
-
-#include "asmredc.h"
-
-void mp_print(mp_limb_t *x, int N) {
-  int i;
-  for (i = 0; i < N-1; ++i)
-    printf("%lu + W*(", x[i]);
-  printf("%lu", x[N-1]);
-  for (i = 0; i < N-1; ++i)
-    printf(")");
-  printf("\n");
-}
-
-static mp_limb_t
-call_mulredc (int N, mp_limb_t *z, mp_limb_t *x, mp_limb_t *y, mp_limb_t *m,
-              mp_limb_t invm)
-{
-  mp_limb_t cy;
-
-  switch (N) 
-    {
-     case 1:
-      cy = mulredc1(z, x[0], y[0], m[0], invm);
-      break;
-     case 2:
-      cy = mulredc2(z, x, y, m, invm);
-      break;
-     case 3:
-      cy = mulredc3(z, x, y, m, invm);
-      break;
-     case 4:
-      cy = mulredc4(z, x, y, m, invm);
-      break;
-     case 5:
-      cy = mulredc5(z, x, y, m, invm);
-      break;
-     case 6:
-      cy = mulredc6(z, x, y, m, invm);
-      break;
-     case 7:
-      cy = mulredc7(z, x, y, m, invm);
-      break;
-     case 8:
-      cy = mulredc8(z, x, y, m, invm);
-      break;
-     case 9:
-      cy = mulredc9(z, x, y, m, invm);
-      break;
-     case 10:
-      cy = mulredc10(z, x, y, m, invm);
-      break;
-     case 11:
-      cy = mulredc11(z, x, y, m, invm);
-      break;
-     case 12:
-      cy = mulredc12(z, x, y, m, invm);
-      break;
-     case 13:
-      cy = mulredc13(z, x, y, m, invm);
-      break;
-     case 14:
-      cy = mulredc14(z, x, y, m, invm);
-      break;
-     case 15:
-      cy = mulredc15(z, x, y, m, invm);
-      break;
-     case 16:
-      cy = mulredc16(z, x, y, m, invm);
-      break;
-     case 17:
-      cy = mulredc17(z, x, y, m, invm);
-      break;
-     case 18:
-      cy = mulredc18(z, x, y, m, invm);
-      break;
-     case 19:
-      cy = mulredc19(z, x, y, m, invm);
-      break;
-     case 20:
-      cy = mulredc20(z, x, y, m, invm);
-      break;
-     default:
-      cy = mulredc20(z, x, y, m, invm);
-    }
-  return cy;
-}
-
-void test(mp_size_t N, int k)
-{
-  mp_limb_t *x, *y, *yp, *z, *m, invm, cy, cy2, *tmp, *tmp2, *tmp3;
-  int i, j;
-  
-  x = (mp_limb_t *) malloc(N*sizeof(mp_limb_t));
-  y = (mp_limb_t *) malloc(N*sizeof(mp_limb_t));
-  z = (mp_limb_t *) malloc((N+1)*sizeof(mp_limb_t));
-  m = (mp_limb_t *) malloc(N*sizeof(mp_limb_t));
-  tmp = (mp_limb_t *) malloc((2*N+2)*sizeof(mp_limb_t));
-  tmp2 = (mp_limb_t *) malloc((2*N+2)*sizeof(mp_limb_t));
-  tmp3 = (mp_limb_t *) malloc((2*N+2)*sizeof(mp_limb_t));
- 
-  if (x == NULL || y == NULL || z == NULL || m == NULL || tmp == NULL ||
-      tmp2 == NULL || tmp3 == NULL)
-    {
-      fprintf (stderr, "Cannot allocate memory in test_mulredc\n");
-      exit (1);
-    }
-
-  mpn_random2(m, N);
-  m[0] |= 1UL;
-  if (m[N-1] == 0) 
-    m[N-1] = 1UL;
-
-  invm = 1UL;
-  for (i = 0; i < 10; ++i)
-    invm = (2*invm-m[0]*invm*invm);
-  invm = -invm;
-
-  assert( (invm*m[0] +1UL) == 0UL);
-  
-  yp = y;
-  for (i=0; i < k; ++i) {
-    /* Try a few special cases */
-    if (i == 0)
-    {
-      /* Try all 0, product should be 0 */
-      for (j = 0; j < N; j++)
-        x[j] = y[j] = 0;
-    }
-    else if (i == 1)
-    {
-      /* Try all 1 */
-      for (j = 0; j < N; j++)
-        x[j] = y[j] = 1;
-    }
-    else if (i == 2)
-    {
-      /* Try all 2^wordsize - 1 */
-      for (j = 0; j < N; j++)
-        x[j] = y[j] = ~(0UL);
-    } 
-    else 
-    {
-      /* In the other cases, try random data */
-      if (i % 2 == 0)
-        {
-          /* Try squaring */
-          mpn_random2(x, N);
-          yp = x;
-        }
-      else
-        {
-          /* Try multiplication */
-          mpn_random2(x, N);
-          mpn_random2(y, N);
-        }
-    }
-    
-    // Mul followed by ecm_redc3
-    mpn_mul_n(tmp, x, yp, N);
-    ecm_redc3(tmp, m, N, invm);
-    cy2 = mpn_add_n (tmp2, tmp + N, tmp, N);
-
-    // Mixed mul and redc
-    cy = call_mulredc (N, z, x, yp, m, invm);
-    
-    if (cy != cy2)
-      printf ("i = %d: mulredc cy = %ld, mpn_mul_n/ecm_redc3 cy = %ld\n", 
-              i, (long) cy, (long) cy2);
-    assert (cy == cy2);
-    if (mpn_cmp(z,tmp2, N) != 0)
-      {
-        printf ("i = %d\nmulredc             = ", i);
-        for (j = N - 1; j >= 0; j--)
-          printf ("%lx ", z[j]);
-        printf ("\nmpn_mul_n/ecm_redc3 = ");
-        for (j = N - 1; j >= 0; j--)
-          printf ("%lx ", tmp2[j]);
-        printf ("\n");
-        assert (mpn_cmp(z,tmp2, N) == 0);
-      }
-
-    if (cy)
-      printf("!");
-    z[N] = cy;
-    // Check with pure gmp : multiply by 2^(N*GMP_NUMB_BITS) and compare.
-    for (j=0; j < N; ++j) {
-      tmp[j] = 0;
-      tmp[j+N] = z[j]; 
-    }
-    tmp[2*N] = z[N];
-    mpn_tdiv_qr(tmp2, tmp3, 0, tmp, 2*N+1, m, N);
-    for (j=0; j < N; ++j)
-      z[j] = tmp3[j]; 
-
-    mpn_mul_n(tmp, x, yp, N);
-    mpn_tdiv_qr(tmp2, tmp3, 0, tmp, 2*N, m, N);
-    
-    assert(mpn_cmp(z, tmp3, N) == 0);
-  }
-  
-  free(tmp); free(tmp2); free(tmp3);
-  free(x); free(y); free(z); free(m);
-}
-  
-
-
-int main(int argc, char** argv)
-{
-  int i, len;
-
-  if (argc > 1) /* Test a specific length */
-  {
-    len = atoi (argv[1]);
-    for (i = 0; i < 1; i++)
-      test (len, 1000000);
-    return 0;
-  }
-
-  for (;;) {
-    for (i = 1; i <= 20; ++i) {
-      test(i, 1000);
-    }
-#if 0
-    test(1, 1000);
-    test(2, 1000);
-    test(3, 1000);
-    test(4, 1000);
-    test(5, 1000);
-    test(6, 1000);
-    test(7, 1000);
-    test(8, 1000);
-    test(9, 1000);
-    test(10, 1000);
-    test(11, 1000);
-    test(12, 1000);
-    test(13, 100);
-    test(14, 100);
-    test(15, 100);
-    test(16, 100);
-    test(17, 100);
-    test(18, 100);
-    test(44, 10);
-    test(45, 10);
-    test(46, 10);
-    test(47, 10);
-    test(48, 10);
-    test(49, 10);
-#endif
-    printf("."); fflush(stdout);
-  }
-#if 0  
-  x[0] = 12580274668139321508UL;
-  x[1] = 9205793975152560417UL;
-  x[2] = 7857372727033793057UL;
-
-  y[0] = 13688385828267279103UL;
-  y[1] = 10575011835742767258UL;
-  y[2] = 8802048318027595690UL;
-
-  
-  m[0] = 2981542467342508025UL;
-  m[1] = 5964669706257742025UL;
-  m[2] = 18446744073678090270UL;
-
-  invm = 9419286575570128311UL;
-
-  carry = mulredc(z, x, y, m, 3, invm);
-
-  printf("%lu + 2^64*(%lu + 2^64*%lu), carry=%lu\n", z[0], z[1], z[2], carry);
-#endif
-  return 0;
-}
-
-
-#if 0
-
-W := 2^64;
-
-x0:= 12580274668139321508;
-x1:= 9205793975152560417;
-x2:= 7857372727033793057;
-x := x0 + W*(x1 + W*x2);
-
-y0:= 13688385828267279103;
-y1:= 10575011835742767258;
-y2:= 8802048318027595690;
-y := y0 + W*(y1 + W*y2);
-  
-m0:= 2981542467342508025;
-m1:= 5964669706257742025;
-m2:= 18446744073678090270;
-m := m0 + W*(m1 + W*m2);
-  
-invm := 9419286575570128311;
-
-
-
-#endif
diff --git a/build.vc12/bench_mulredc/Makefile.am b/build.vc12/bench_mulredc/Makefile.am
deleted file mode 100644
index 5a7c0bc7..00000000
--- a/build.vc12/bench_mulredc/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = bench_mulredc.vcxproj bench_mulredc.vcxproj.filters
diff --git a/build.vc12/bench_mulredc/bench_mulredc.vcxproj b/build.vc12/bench_mulredc/bench_mulredc.vcxproj
deleted file mode 100644
index 385026d8..00000000
--- a/build.vc12/bench_mulredc/bench_mulredc.vcxproj
+++ /dev/null
@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{4727DE12-787D-432D-B166-BF103B0C3C87}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <RootNamespace>bench_mulredc</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <LinkIncremental>true</LinkIncremental>
-    <OutDir>$(SolutionDir)..bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <LinkIncremental>true</LinkIncremental>
-    <OutDir>$(SolutionDir)..bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <LinkIncremental>false</LinkIncremental>
-    <OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <LinkIncremental>false</LinkIncremental>
-    <OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);..\..\;..\assembler;..\</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>psapi.lib;..\..\..\$(mp_dir)lib\$(IntDir)\mpir.lib;..\..\lib\$(IntDir)\libecm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);..\..\;..\assembler;..\</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>psapi.lib;..\..\..\$(mp_dir)lib\$(IntDir)\mpir.lib;..\..\lib\$(IntDir)\libecm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);..\..\;..\assembler;..\</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>psapi.lib;..\..\..\$(mp_dir)lib\$(IntDir)\mpir.lib;..\..\lib\$(IntDir)\libecm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>_WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);..\..\;..\assembler;..\</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>psapi.lib;..\..\..\$(mp_dir)lib\$(IntDir)\mpir.lib;..\..\lib\$(IntDir)\libecm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\bench_mulredc.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc12/bench_mulredc/bench_mulredc.vcxproj.filters b/build.vc12/bench_mulredc/bench_mulredc.vcxproj.filters
deleted file mode 100644
index 5e88a3d4..00000000
--- a/build.vc12/bench_mulredc/bench_mulredc.vcxproj.filters
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\bench_mulredc.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc12/config.h b/build.vc12/config.h
deleted file mode 100644
index 67936b0a..00000000
--- a/build.vc12/config.h
+++ /dev/null
@@ -1,246 +0,0 @@
-/* config.h.in.  Generated from configure.in by autoheader.  */
-
-#define VERSION ECM_VERSION
-
-#define VERSION_GPU "gpu_ecm-win"
-
-#define PACKAGE_BUGREPORT "ecm-discuss@inria.fr"
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
-   systems. This function is required for `alloca.c' support on those systems.
-   */
-#undef CRAY_STACKSEG_END
-
-/* Define to 1 if using `alloca.c'. */
-#define C_ALLOCA 1
-
-/* Define to 1 if you have the `access' function. */
-#undef HAVE_ACCESS
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-#define HAVE_ALLOCA 1
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-   */
-#undef HAVE_ALLOCA_H
-
-/* Define to 1 if you have the `ctime' function. */
-#define HAVE_CTIME 1
-
-/* Define to 1 if you have the <ctype.h> header file. */
-#define HAVE_CTYPE_H 1
-
-/* Define to 1 if you have the `floor' function. */
-#define HAVE_FLOOR 1
-
-/* Define to 1 if you have the `fmod' function. */
-#define HAVE_FMOD 1
-
-/* Define to 1 if you have the `gethostname' function. */
-#define HAVE_GETHOSTNAME 1
-
-/* Define to 1 if you have the `getrusage' function. */
-#define HAVE_GETRUSAGE   1
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#undef HAVE_GETTIMEOFDAY
-
-/* Define to 1 if you have the <gmp.h> header file. */
-#define HAVE_GMP_H 1
-
-/* Define to 1 if gwnum.a or gwnum.lib exist */
-#undef HAVE_GWNUM
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the <io.h> header file. */
-#undef HAVE_IO_H
-
-/* Define to 1 if you have the `isascii' function. */
-#undef HAVE_ISASCII
-
-/* Define to 1 if you have the `isdigit' function. */
-#define HAVE_ISDIGIT 1
-
-/* Define to 1 if you have the `isspace' function. */
-#define HAVE_ISSPACE 1
-
-/* Define to 1 if you have the `isxdigit' function. */
-#define HAVE_ISXDIGIT 1
-
-/* Define to 1 if you have the `m' library (-lm). */
-#undef HAVE_LIBM
-
-/* Define to 1 if you have the <limits.h> header file. */
-#define HAVE_LIMITS_H 1
-
-/* Define to 1 if you have the <malloc.h> header file. */
-#define HAVE_MALLOC_H 1
- 
-/* Define to 1 if you have the `malloc_usable_size' function. */
-#undef HAVE_MALLOC_USABLE_SIZE
-
-/* Define to 1 if you have the <math.h> header file. */
-#define HAVE_MATH_H 1
-
-/* Define to 1 if you have the `memmove' function. */
-#define HAVE_MEMMOVE 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `memset' function. */
-#define HAVE_MEMSET 1
-
-/* Define to 1 if you have the `nice' function. */
-#undef HAVE_NICE
-
-/* Define to 1 if you have the `pow' function. */
-#define HAVE_POW 1
-
-/* Define to 1 if you have the `signal' function. */
-#define HAVE_SIGNAL 1
-
-/* Define to 1 if you have the <signal.h> header file. */
-#define HAVE_SIGNAL_H 1
-
-/* Define to 1 if you have the `sqrt' function. */
-#define HAVE_SQRT 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the `strchr' function. */
-#define HAVE_STRCHR 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `strlen' function. */
-#define HAVE_STRLEN 1
-
-/* Define to 1 if you have the `strncasecmp' function. */
-#undef HAVE_STRNCASECMP
-
-/* Define to 1 if you have the `strstr' function. */
-#undef HAVE_STRSTR
-
-/* Define to 1 if you have the <sys/resource.h> header file. */
-#undef HAVE_SYS_RESOURCE_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the `time' function. */
-#undef HAVE_TIME
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the `unlink' function. */
-#define HAVE_UNLINK 1
-
-/* Define to 1 if you have the <windows.h> header file. */
-#define HAVE_WINDOWS_H 1
-
-/* Define to 1 if you have the `__gmpn_add_nc' function. */
-#if defined( _WIN64 )
-#  define HAVE___GMPN_ADD_NC 1
-#endif
-
-/* Define to 1 if you have the `__gmpn_mod_34lsub1' function. */
-#define HAVE___GMPN_MOD_34LSUB1 1
-
-/* Define to 1 if you have the `__gmpn_mul_fft' function. */
-#define HAVE___GMPN_MUL_FFT 1
-
-/* Define to 1 if you want memory debugging */
-#undef MEMORY_DEBUG
-
-/* Define if the system has the type `long long'. */
-#define HAVE_LONG_LONG		1
-#define HAVE_LONG_LONG_INT  1
-
-/* Define to 1 to use asm redc on x86 or x86_64 */
-#  define NATIVE_REDC   1         
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
-
-/* If using the C implementation of alloca, define if you know the
-   direction of stack growth for your system; otherwise it will be
-   automatically deduced at runtime.
-	STACK_DIRECTION > 0 => grows toward higher addresses
-	STACK_DIRECTION < 0 => grows toward lower addresses
-	STACK_DIRECTION = 0 => direction of growth unknown */
-#undef STACK_DIRECTION
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Define to 1 if you want assertions enabled */
-#undef WANT_ASSERT
-
-/* Define to 1 if you want shell command execution */
-#undef WANT_SHELLCMD
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* How to specify hot-spot attribute, if available */
-#define ATTRIBUTE_HOT
-
-#define HAVE___GMPN_REDC_1 1
-
-#define HAVE___GMPN_REDC_2 1
-
-#define HAVE_ASM_REDC3  1
-
-#define WINDOWS64_ABI   1
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
-   calls it, or to nothing if 'inline' is not supported under any name.  */
-#ifndef __cplusplus
-#define inline __inline
-#endif
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
-
-#define PRIdSIZE "Id"
-#define PRIuSIZE "Iu"
-
-#ifdef _MSC_VER
-
-#define __func__ __FUNCTION__
-
-/* define Windows tuning here */
-#  define __tune_corei7__
-
-#  if _MSC_VER < 1600
-#    define int64_t     __int64
-#    define uint64_t    unsigned __int64
-#  endif
-#  define strncasecmp strnicmp
-#  define access       _access 
-#  define alloca      _alloca
-#  define fseek64     _fseek64
-#  define ftell64     _ftell64
-#  define omp_get_thread_limit omp_get_max_threads
-#endif
diff --git a/build.vc12/ecm.sln b/build.vc12/ecm.sln
deleted file mode 100644
index 2dad0bb9..00000000
--- a/build.vc12/ecm.sln
+++ /dev/null
@@ -1,58 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2012
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libecm", "libecm\libecm.vcxproj", "{CD555681-D65B-4173-A29C-B8BF06A4871B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ecm", "ecm\ecm.vcxproj", "{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tune", "tune\tune.vcxproj", "{80E08750-5C6C-492E-BB1E-7200978AE125}"
-	ProjectSection(ProjectDependencies) = postProject
-		{CD555681-D65B-4173-A29C-B8BF06A4871B} = {CD555681-D65B-4173-A29C-B8BF06A4871B}
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187} = {C0E2EA85-996A-4B5F-AD30-590FAF5B7187}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bench_mulredc", "bench_mulredc\bench_mulredc.vcxproj", "{4727DE12-787D-432D-B166-BF103B0C3C87}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Debug|Win32.ActiveCfg = Debug|Win32
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Debug|Win32.Build.0 = Debug|Win32
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Debug|x64.ActiveCfg = Debug|x64
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Debug|x64.Build.0 = Debug|x64
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Release|Win32.ActiveCfg = Release|Win32
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Release|Win32.Build.0 = Release|Win32
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Release|x64.ActiveCfg = Release|x64
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Release|x64.Build.0 = Release|x64
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Debug|Win32.Build.0 = Debug|Win32
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Debug|x64.ActiveCfg = Debug|x64
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Debug|x64.Build.0 = Debug|x64
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Release|Win32.ActiveCfg = Release|Win32
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Release|Win32.Build.0 = Release|Win32
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Release|x64.ActiveCfg = Release|x64
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Release|x64.Build.0 = Release|x64
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Debug|Win32.ActiveCfg = Release|x64
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Debug|x64.ActiveCfg = Release|x64
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Debug|x64.Build.0 = Release|x64
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Release|Win32.ActiveCfg = Release|Win32
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Release|Win32.Build.0 = Release|Win32
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Release|x64.ActiveCfg = Release|x64
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Release|x64.Build.0 = Release|x64
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Debug|Win32.ActiveCfg = Debug|Win32
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Debug|Win32.Build.0 = Debug|Win32
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Debug|x64.ActiveCfg = Debug|x64
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Debug|x64.Build.0 = Debug|x64
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Release|Win32.ActiveCfg = Release|Win32
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Release|Win32.Build.0 = Release|Win32
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Release|x64.ActiveCfg = Release|x64
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/build.vc12/ecm/Makefile.am b/build.vc12/ecm/Makefile.am
deleted file mode 100644
index 2f05e85c..00000000
--- a/build.vc12/ecm/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = ecm.vcxproj ecm.vcxproj.filters
diff --git a/build.vc12/ecm/ecm.vcxproj b/build.vc12/ecm/ecm.vcxproj
deleted file mode 100644
index be5e6b82..00000000
--- a/build.vc12/ecm/ecm.vcxproj
+++ /dev/null
@@ -1,237 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}</ProjectGuid>
-    <RootNamespace>ecm</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="..\vsyasm.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;NDEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;..\..\..\$(mp_dir)lib\$(Platform)\release\$(mp_lib);%(AdditionalDependencies)</AdditionalDependencies>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <StackReserveSize>8388608</StackReserveSize>
-      <StackCommitSize>65536</StackCommitSize>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;_DEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <StackReserveSize>8388608</StackReserveSize>
-      <StackCommitSize>65536</StackCommitSize>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxi.c" />
-    <ClCompile Include="..\..\b1_ainc.c" />
-    <ClCompile Include="..\..\candi.c" />
-    <ClCompile Include="..\..\eval.c" />
-    <ClCompile Include="..\..\getprime_r.c" />
-    <ClCompile Include="..\..\main.c" />
-    <ClCompile Include="..\..\random.c" />
-    <ClCompile Include="..\..\resume.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-    <ClInclude Include="..\..\champions.h" />
-    <ClInclude Include="..\..\ecm-ecm.h" />
-    <ClInclude Include="..\..\ecm-gmp.h" />
-    <ClInclude Include="..\..\ecm-impl.h" />
-    <ClInclude Include="..\..\ecm-params.h" />
-    <ClInclude Include="..\..\ecm.h" />
-    <ClInclude Include="..\..\getprime_r.h" />
-    <ClInclude Include="..\..\longlong.h" />
-    <ClInclude Include="..\config.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libecm\libecm.vcxproj">
-      <Project>{cd555681-d65b-4173-a29c-b8bf06a4871b}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="..\vsyasm.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc12/ecm/ecm.vcxproj.filters b/build.vc12/ecm/ecm.vcxproj.filters
deleted file mode 100644
index c7062937..00000000
--- a/build.vc12/ecm/ecm.vcxproj.filters
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\b1_ainc.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\candi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\eval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\main.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\random.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\resume.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\getprime_r.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\champions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\getprime_r.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc12/ecm_gpu.sln b/build.vc12/ecm_gpu.sln
deleted file mode 100644
index 87325a62..00000000
--- a/build.vc12/ecm_gpu.sln
+++ /dev/null
@@ -1,39 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2012
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libecm_gpu", "libecm_gpu\libecm_gpu.vcxproj", "{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ecm_gpu", "ecm_gpu\ecm_gpu.vcxproj", "{1B353D8B-9808-4EB3-A5E7-075D751757AD}"
-	ProjectSection(ProjectDependencies) = postProject
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00} = {3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Debug|Win32.Build.0 = Debug|Win32
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Debug|x64.ActiveCfg = Debug|x64
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Debug|x64.Build.0 = Debug|x64
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Release|Win32.ActiveCfg = Release|Win32
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Release|Win32.Build.0 = Release|Win32
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Release|x64.ActiveCfg = Release|x64
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Release|x64.Build.0 = Release|x64
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Debug|Win32.ActiveCfg = Debug|Win32
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Debug|Win32.Build.0 = Debug|Win32
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Debug|x64.ActiveCfg = Debug|x64
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Debug|x64.Build.0 = Debug|x64
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Release|Win32.ActiveCfg = Release|Win32
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Release|Win32.Build.0 = Release|Win32
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Release|x64.ActiveCfg = Release|x64
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/build.vc12/ecm_gpu/Makefile.am b/build.vc12/ecm_gpu/Makefile.am
deleted file mode 100644
index 4dc77cb5..00000000
--- a/build.vc12/ecm_gpu/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = ecm_gpu.vcxproj ecm_gpu.vcxproj.filters
diff --git a/build.vc12/ecm_gpu/ecm_gpu.vcxproj b/build.vc12/ecm_gpu/ecm_gpu.vcxproj
deleted file mode 100644
index 65dc6577..00000000
--- a/build.vc12/ecm_gpu/ecm_gpu.vcxproj
+++ /dev/null
@@ -1,279 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{1B353D8B-9808-4EB3-A5E7-075D751757AD}</ProjectGuid>
-    <RootNamespace>ecm_gpu</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="..\vsyasm.props" />
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 7.5.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC20;NDEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);..\..\lib\$(IntDir)libecm_gpu.lib;advapi32.lib;ws2_32.lib;cudart.lib</AdditionalDependencies>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <CudaCompile>
-      <CodeGeneration>compute_20,sm_20</CodeGeneration>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <TargetMachinePlatform>32</TargetMachinePlatform>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <Defines>
-      </Defines>
-    </CudaCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC20;_WIN64;NDEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;..\..\..\$(mp_dir)lib\$(Platform)\release\$(mp_lib);%(AdditionalDependencies)</AdditionalDependencies>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <StackReserveSize>8388608</StackReserveSize>
-      <StackCommitSize>65536</StackCommitSize>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC20;_DEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);..\..\lib\$(IntDir)libecm_gpu.lib;advapi32.lib;ws2_32.lib;cudart.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <CudaCompile>
-      <CodeGeneration>compute_20,sm_20</CodeGeneration>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <TargetMachinePlatform>32</TargetMachinePlatform>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <Defines>
-      </Defines>
-    </CudaCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC20;_WIN64;_DEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);..\..\lib\$(IntDir)libecm_gpu.lib;advapi32.lib;ws2_32.lib;cudart.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <StackReserveSize>8388608</StackReserveSize>
-      <StackCommitSize>65536</StackCommitSize>
-    </Link>
-    <CudaCompile>
-      <CodeGeneration>compute_20,sm_20</CodeGeneration>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <TargetMachinePlatform>64</TargetMachinePlatform>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <Defines>
-      </Defines>
-    </CudaCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);..\..\lib\$(IntDir)libecm_gpu.lib;advapi32.lib;ws2_32.lib;cudart.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-    <CudaCompile>
-      <CodeGeneration>compute_20,sm_20</CodeGeneration>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <TargetMachinePlatform>64</TargetMachinePlatform>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <Defines>
-      </Defines>
-    </CudaCompile>
-    <CudaLink>
-      <AdditionalDependencies>
-      </AdditionalDependencies>
-    </CudaLink>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxi.c" />
-    <ClCompile Include="..\..\b1_ainc.c" />
-    <ClCompile Include="..\..\candi.c" />
-    <ClCompile Include="..\..\eval.c" />
-    <ClCompile Include="..\..\getprime_r.c" />
-    <ClCompile Include="..\..\main.c" />
-    <ClCompile Include="..\..\memusage.c" />
-    <ClCompile Include="..\..\random.c" />
-    <ClCompile Include="..\..\resume.c" />
-    <ClCompile Include="..\vacopy.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-    <ClInclude Include="..\..\champions.h" />
-    <ClInclude Include="..\..\config.h" />
-    <ClInclude Include="..\..\ecm-ecm.h" />
-    <ClInclude Include="..\..\ecm-gmp.h" />
-    <ClInclude Include="..\..\ecm-impl.h" />
-    <ClInclude Include="..\..\ecm-params.h" />
-    <ClInclude Include="..\..\ecm.h" />
-    <ClInclude Include="..\..\getprime_r.h" />
-    <ClInclude Include="..\..\longlong.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="..\vsyasm.targets" />
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 7.5.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc12/ecm_gpu/ecm_gpu.vcxproj.filters b/build.vc12/ecm_gpu/ecm_gpu.vcxproj.filters
deleted file mode 100644
index 5d1f48c3..00000000
--- a/build.vc12/ecm_gpu/ecm_gpu.vcxproj.filters
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <ClCompile Include="..\vacopy.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\auxi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\b1_ainc.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\candi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\eval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\main.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\random.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\resume.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\getprime_r.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\memusage.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\champions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\getprime_r.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{2a13feaf-0c0e-469a-8047-82c647322da9}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{163547c7-89d7-4ddc-b0ad-02b4cfd722b4}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc12/file_copy.bat b/build.vc12/file_copy.bat
deleted file mode 100644
index dcb84ef9..00000000
--- a/build.vc12/file_copy.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-if not exist %1 ( echo file_copy failure: %1 not found && goto exit )
-if exist %2     ( fc %1 %2 > nul && if not %errorlevel 1 goto exit )
-echo copying %1 to %2 && copy %1 %2
-:exit
diff --git a/build.vc12/gen_ecm_h.bat b/build.vc12/gen_ecm_h.bat
deleted file mode 100644
index 280470d5..00000000
--- a/build.vc12/gen_ecm_h.bat
+++ /dev/null
@@ -1,13 +0,0 @@
-@echo off
-echo creating ecm.h from ecm.h.in
-echo /* generated from ecm-h.in by gen_ecm_h.bat */>tmp.h
-
-for /f "tokens=1,2*" %%a in (..\ecm.h.in) do (
-  if "%%a" EQU "#undef" (
-    if "%%b" EQU "ECM_VERSION" (
-      echo #define ECM_VERSION "7.0.6-rc1">>tmp.h
-    )
-  ) else echo %%a %%b %%c>>tmp.h
-)
-
-call out_copy_rename tmp.h ..\ ecm.h
diff --git a/build.vc12/getopt.c b/build.vc12/getopt.c
deleted file mode 100644
index 1716d95b..00000000
--- a/build.vc12/getopt.c
+++ /dev/null
@@ -1,1281 +0,0 @@
-/* Getopt for GNU.
-   NOTE: getopt is now part of the C library, so if you don't know what
-   "Keep this file name-space clean" means, talk to drepper@gnu.org
-   before changing it!
-   Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002
-   	Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
-   Ditto for AIX 3.2 and <stdlib.h>.  */
-
-#define HAVE_STRING_H	1
-
-#ifndef _NO_PROTO
-# define _NO_PROTO
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if !defined __STDC__ || !__STDC__
-/* This is a separate conditional since some stdc systems
-   reject `defined (const)'.  */
-# ifndef const
-#  define const
-# endif
-#endif
-
-#include <stdio.h>
-
-/* Comment out all this code if we are using the GNU C Library, and are not
-   actually compiling the library itself.  This code is part of the GNU C
-   Library, but also included in many other GNU distributions.  Compiling
-   and linking in this code is a waste when using the GNU C library
-   (especially if it is a shared library).  Rather than having every GNU
-   program understand `configure --with-gnu-libc' and omit the object files,
-   it is simpler to just do this in the source for each such file.  */
-
-#define GETOPT_INTERFACE_VERSION 2
-#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
-# include <gnu-versions.h>
-# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
-#  define ELIDE_CODE
-# endif
-#endif
-
-#ifndef ELIDE_CODE
-
-
-/* This needs to come after some library #include
-   to get __GNU_LIBRARY__ defined.  */
-#ifdef	__GNU_LIBRARY__
-/* Don't include stdlib.h for non-GNU C libraries because some of them
-   contain conflicting prototypes for getopt.  */
-# include <stdlib.h>
-# include <unistd.h>
-#endif	/* GNU C library.  */
-
-#ifdef VMS
-# include <unixlib.h>
-# if HAVE_STRING_H - 0
-#  include <string.h>
-# endif
-#endif
-
-#ifndef _
-/* This is for other GNU distributions with internationalized messages.  */
-# if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
-#  include <libintl.h>
-#  ifndef _
-#   define _(msgid)	gettext (msgid)
-#  endif
-# else
-#  define _(msgid)	(msgid)
-# endif
-# if defined _LIBC && defined USE_IN_LIBIO
-#  include <wchar.h>
-# endif
-#endif
-
-#ifndef attribute_hidden
-# define attribute_hidden
-#endif
-
-/* This version of `getopt' appears to the caller like standard Unix `getopt'
-   but it behaves differently for the user, since it allows the user
-   to intersperse the options with the other arguments.
-
-   As `getopt' works, it permutes the elements of ARGV so that,
-   when it is done, all the options precede everything else.  Thus
-   all application programs are extended to handle flexible argument order.
-
-   Setting the environment variable POSIXLY_CORRECT disables permutation.
-   Then the behavior is completely standard.
-
-   GNU application programs can use a third alternative mode in which
-   they can distinguish the relative order of options and other arguments.  */
-
-#include "getopt.h"
-
-/* For communication from `getopt' to the caller.
-   When `getopt' finds an option that takes an argument,
-   the argument value is returned here.
-   Also, when `ordering' is RETURN_IN_ORDER,
-   each non-option ARGV-element is returned here.  */
-
-char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
-   This is used for communication to and from the caller
-   and for communication between successive calls to `getopt'.
-
-   On entry to `getopt', zero means this is the first call; initialize.
-
-   When `getopt' returns -1, this is the index of the first of the
-   non-option elements that the caller should itself scan.
-
-   Otherwise, `optind' communicates from one call to the next
-   how much of ARGV has been scanned so far.  */
-
-/* 1003.2 says this must be 1 before any call.  */
-int optind = 1;
-
-/* Formerly, initialization of getopt depended on optind==0, which
-   causes problems with re-calling getopt as programs generally don't
-   know that. */
-
-int __getopt_initialized attribute_hidden;
-
-/* The next char to be scanned in the option-element
-   in which the last option character we returned was found.
-   This allows us to pick up the scan where we left off.
-
-   If this is zero, or a null string, it means resume the scan
-   by advancing to the next ARGV-element.  */
-
-static char *nextchar;
-
-/* Callers store zero here to inhibit the error message
-   for unrecognized options.  */
-
-int opterr = 1;
-
-/* Set to an option character which was unrecognized.
-   This must be initialized on some systems to avoid linking in the
-   system's own getopt implementation.  */
-
-int optopt = '?';
-
-/* Describe how to deal with options that follow non-option ARGV-elements.
-
-   If the caller did not specify anything,
-   the default is REQUIRE_ORDER if the environment variable
-   POSIXLY_CORRECT is defined, PERMUTE otherwise.
-
-   REQUIRE_ORDER means don't recognize them as options;
-   stop option processing when the first non-option is seen.
-   This is what Unix does.
-   This mode of operation is selected by either setting the environment
-   variable POSIXLY_CORRECT, or using `+' as the first character
-   of the list of option characters.
-
-   PERMUTE is the default.  We permute the contents of ARGV as we scan,
-   so that eventually all the non-options are at the end.  This allows options
-   to be given in any order, even with programs that were not written to
-   expect this.
-
-   RETURN_IN_ORDER is an option available to programs that were written
-   to expect options and other ARGV-elements in any order and that care about
-   the ordering of the two.  We describe each non-option ARGV-element
-   as if it were the argument of an option with character code 1.
-   Using `-' as the first character of the list of option characters
-   selects this mode of operation.
-
-   The special argument `--' forces an end of option-scanning regardless
-   of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
-   `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
-
-static enum
-{
-  REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
-} ordering;
-
-/* Value of POSIXLY_CORRECT environment variable.  */
-static char *posixly_correct;
-
-#ifdef	__GNU_LIBRARY__
-/* We want to avoid inclusion of string.h with non-GNU libraries
-   because there are many ways it can cause trouble.
-   On some systems, it contains special magic macros that don't work
-   in GCC.  */
-# include <string.h>
-# define my_index	strchr
-#else
-
-# if HAVE_STRING_H
-#  include <string.h>
-# else
-#  include <strings.h>
-# endif
-
-/* Avoid depending on library functions or files
-   whose names are inconsistent.  */
-
-#ifndef getenv
-extern char *getenv ();
-#endif
-
-static char *
-my_index (str, chr)
-     const char *str;
-     int chr;
-{
-  while (*str)
-    {
-      if (*str == chr)
-	return (char *) str;
-      str++;
-    }
-  return 0;
-}
-
-/* If using GCC, we can safely declare strlen this way.
-   If not using GCC, it is ok not to declare it.  */
-#ifdef __GNUC__
-/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
-   That was relevant to code that was here before.  */
-# if (!defined __STDC__ || !__STDC__) && !defined strlen
-/* gcc with -traditional declares the built-in strlen to return int,
-   and has done so at least since version 2.4.5. -- rms.  */
-extern int strlen (const char *);
-# endif /* not __STDC__ */
-#endif /* __GNUC__ */
-
-#endif /* not __GNU_LIBRARY__ */
-
-/* Handle permutation of arguments.  */
-
-/* Describe the part of ARGV that contains non-options that have
-   been skipped.  `first_nonopt' is the index in ARGV of the first of them;
-   `last_nonopt' is the index after the last of them.  */
-
-static int first_nonopt;
-static int last_nonopt;
-
-#ifdef _LIBC
-/* Stored original parameters.
-   XXX This is no good solution.  We should rather copy the args so
-   that we can compare them later.  But we must not use malloc(3).  */
-extern int __libc_argc;
-extern char **__libc_argv;
-
-/* Bash 2.0 gives us an environment variable containing flags
-   indicating ARGV elements that should not be considered arguments.  */
-
-# ifdef USE_NONOPTION_FLAGS
-/* Defined in getopt_init.c  */
-extern char *__getopt_nonoption_flags;
-
-static int nonoption_flags_max_len;
-static int nonoption_flags_len;
-# endif
-
-# ifdef USE_NONOPTION_FLAGS
-#  define SWAP_FLAGS(ch1, ch2) \
-  if (nonoption_flags_len > 0)						      \
-    {									      \
-      char __tmp = __getopt_nonoption_flags[ch1];			      \
-      __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2];	      \
-      __getopt_nonoption_flags[ch2] = __tmp;				      \
-    }
-# else
-#  define SWAP_FLAGS(ch1, ch2)
-# endif
-#else	/* !_LIBC */
-# define SWAP_FLAGS(ch1, ch2)
-#endif	/* _LIBC */
-
-/* Exchange two adjacent subsequences of ARGV.
-   One subsequence is elements [first_nonopt,last_nonopt)
-   which contains all the non-options that have been skipped so far.
-   The other is elements [last_nonopt,optind), which contains all
-   the options processed since those non-options were skipped.
-
-   `first_nonopt' and `last_nonopt' are relocated so that they describe
-   the new indices of the non-options in ARGV after they are moved.  */
-
-#if defined __STDC__ && __STDC__
-static void exchange (char **);
-#endif
-
-static void
-exchange (argv)
-     char **argv;
-{
-  int bottom = first_nonopt;
-  int middle = last_nonopt;
-  int top = optind;
-  char *tem;
-
-  /* Exchange the shorter segment with the far end of the longer segment.
-     That puts the shorter segment into the right place.
-     It leaves the longer segment in the right place overall,
-     but it consists of two parts that need to be swapped next.  */
-
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
-  /* First make sure the handling of the `__getopt_nonoption_flags'
-     string can work normally.  Our top argument must be in the range
-     of the string.  */
-  if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
-    {
-      /* We must extend the array.  The user plays games with us and
-	 presents new arguments.  */
-      char *new_str = malloc (top + 1);
-      if (new_str == NULL)
-	nonoption_flags_len = nonoption_flags_max_len = 0;
-      else
-	{
-	  memset (__mempcpy (new_str, __getopt_nonoption_flags,
-			     nonoption_flags_max_len),
-		  '\0', top + 1 - nonoption_flags_max_len);
-	  nonoption_flags_max_len = top + 1;
-	  __getopt_nonoption_flags = new_str;
-	}
-    }
-#endif
-
-  while (top > middle && middle > bottom)
-    {
-      if (top - middle > middle - bottom)
-	{
-	  /* Bottom segment is the short one.  */
-	  int len = middle - bottom;
-	  register int i;
-
-	  /* Swap it with the top part of the top segment.  */
-	  for (i = 0; i < len; i++)
-	    {
-	      tem = argv[bottom + i];
-	      argv[bottom + i] = argv[top - (middle - bottom) + i];
-	      argv[top - (middle - bottom) + i] = tem;
-	      SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
-	    }
-	  /* Exclude the moved bottom segment from further swapping.  */
-	  top -= len;
-	}
-      else
-	{
-	  /* Top segment is the short one.  */
-	  int len = top - middle;
-	  register int i;
-
-	  /* Swap it with the bottom part of the bottom segment.  */
-	  for (i = 0; i < len; i++)
-	    {
-	      tem = argv[bottom + i];
-	      argv[bottom + i] = argv[middle + i];
-	      argv[middle + i] = tem;
-	      SWAP_FLAGS (bottom + i, middle + i);
-	    }
-	  /* Exclude the moved top segment from further swapping.  */
-	  bottom += len;
-	}
-    }
-
-  /* Update records for the slots the non-options now occupy.  */
-
-  first_nonopt += (optind - last_nonopt);
-  last_nonopt = optind;
-}
-
-/* Initialize the internal data when the first call is made.  */
-
-#if defined __STDC__ && __STDC__
-static const char *_getopt_initialize (int, char *const *, const char *);
-#endif
-static const char *
-_getopt_initialize (argc, argv, optstring)
-     int argc;
-     char *const *argv;
-     const char *optstring;
-{
-  /* Start processing options with ARGV-element 1 (since ARGV-element 0
-     is the program name); the sequence of previously skipped
-     non-option ARGV-elements is empty.  */
-
-  first_nonopt = last_nonopt = optind;
-
-  nextchar = NULL;
-
-  posixly_correct = getenv ("POSIXLY_CORRECT");
-
-  /* Determine how to handle the ordering of options and nonoptions.  */
-
-  if (optstring[0] == '-')
-    {
-      ordering = RETURN_IN_ORDER;
-      ++optstring;
-    }
-  else if (optstring[0] == '+')
-    {
-      ordering = REQUIRE_ORDER;
-      ++optstring;
-    }
-  else if (posixly_correct != NULL)
-    ordering = REQUIRE_ORDER;
-  else
-    ordering = PERMUTE;
-
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
-  if (posixly_correct == NULL
-      && argc == __libc_argc && argv == __libc_argv)
-    {
-      if (nonoption_flags_max_len == 0)
-	{
-	  if (__getopt_nonoption_flags == NULL
-	      || __getopt_nonoption_flags[0] == '\0')
-	    nonoption_flags_max_len = -1;
-	  else
-	    {
-	      const char *orig_str = __getopt_nonoption_flags;
-	      int len = nonoption_flags_max_len = strlen (orig_str);
-	      if (nonoption_flags_max_len < argc)
-		nonoption_flags_max_len = argc;
-	      __getopt_nonoption_flags =
-		(char *) malloc (nonoption_flags_max_len);
-	      if (__getopt_nonoption_flags == NULL)
-		nonoption_flags_max_len = -1;
-	      else
-		memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
-			'\0', nonoption_flags_max_len - len);
-	    }
-	}
-      nonoption_flags_len = nonoption_flags_max_len;
-    }
-  else
-    nonoption_flags_len = 0;
-#endif
-
-  return optstring;
-}
-
-/* Scan elements of ARGV (whose length is ARGC) for option characters
-   given in OPTSTRING.
-
-   If an element of ARGV starts with '-', and is not exactly "-" or "--",
-   then it is an option element.  The characters of this element
-   (aside from the initial '-') are option characters.  If `getopt'
-   is called repeatedly, it returns successively each of the option characters
-   from each of the option elements.
-
-   If `getopt' finds another option character, it returns that character,
-   updating `optind' and `nextchar' so that the next call to `getopt' can
-   resume the scan with the following option character or ARGV-element.
-
-   If there are no more option characters, `getopt' returns -1.
-   Then `optind' is the index in ARGV of the first ARGV-element
-   that is not an option.  (The ARGV-elements have been permuted
-   so that those that are not options now come last.)
-
-   OPTSTRING is a string containing the legitimate option characters.
-   If an option character is seen that is not listed in OPTSTRING,
-   return '?' after printing an error message.  If you set `opterr' to
-   zero, the error message is suppressed but we still return '?'.
-
-   If a char in OPTSTRING is followed by a colon, that means it wants an arg,
-   so the following text in the same ARGV-element, or the text of the following
-   ARGV-element, is returned in `optarg'.  Two colons mean an option that
-   wants an optional arg; if there is text in the current ARGV-element,
-   it is returned in `optarg', otherwise `optarg' is set to zero.
-
-   If OPTSTRING starts with `-' or `+', it requests different methods of
-   handling the non-option ARGV-elements.
-   See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
-
-   Long-named options begin with `--' instead of `-'.
-   Their names may be abbreviated as long as the abbreviation is unique
-   or is an exact match for some defined option.  If they have an
-   argument, it follows the option name in the same ARGV-element, separated
-   from the option name by a `=', or else the in next ARGV-element.
-   When `getopt' finds a long-named option, it returns 0 if that option's
-   `flag' field is nonzero, the value of the option's `val' field
-   if the `flag' field is zero.
-
-   The elements of ARGV aren't really const, because we permute them.
-   But we pretend they're const in the prototype to be compatible
-   with other systems.
-
-   LONGOPTS is a vector of `struct option' terminated by an
-   element containing a name which is zero.
-
-   LONGIND returns the index in LONGOPT of the long-named option found.
-   It is only valid when a long-named option has been found by the most
-   recent call.
-
-   If LONG_ONLY is nonzero, '-' as well as '--' can introduce
-   long-named options.  */
-
-int
-_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
-     int argc;
-     char *const *argv;
-     const char *optstring;
-     const struct option *longopts;
-     int *longind;
-     int long_only;
-{
-  int print_errors = opterr;
-  if (optstring[0] == ':')
-    print_errors = 0;
-
-  if (argc < 1)
-    return -1;
-
-  optarg = NULL;
-
-  if (optind == 0 || !__getopt_initialized)
-    {
-      if (optind == 0)
-	optind = 1;	/* Don't scan ARGV[0], the program name.  */
-      optstring = _getopt_initialize (argc, argv, optstring);
-      __getopt_initialized = 1;
-    }
-
-  /* Test whether ARGV[optind] points to a non-option argument.
-     Either it does not have option syntax, or there is an environment flag
-     from the shell indicating it is not an option.  The later information
-     is only used when the used in the GNU libc.  */
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
-# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0'	      \
-		      || (optind < nonoption_flags_len			      \
-			  && __getopt_nonoption_flags[optind] == '1'))
-#else
-# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
-#endif
-
-  if (nextchar == NULL || *nextchar == '\0')
-    {
-      /* Advance to the next ARGV-element.  */
-
-      /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
-	 moved back by the user (who may also have changed the arguments).  */
-      if (last_nonopt > optind)
-	last_nonopt = optind;
-      if (first_nonopt > optind)
-	first_nonopt = optind;
-
-      if (ordering == PERMUTE)
-	{
-	  /* If we have just processed some options following some non-options,
-	     exchange them so that the options come first.  */
-
-	  if (first_nonopt != last_nonopt && last_nonopt != optind)
-	    exchange ((char **) argv);
-	  else if (last_nonopt != optind)
-	    first_nonopt = optind;
-
-	  /* Skip any additional non-options
-	     and extend the range of non-options previously skipped.  */
-
-	  while (optind < argc && NONOPTION_P)
-	    optind++;
-	  last_nonopt = optind;
-	}
-
-      /* The special ARGV-element `--' means premature end of options.
-	 Skip it like a null option,
-	 then exchange with previous non-options as if it were an option,
-	 then skip everything else like a non-option.  */
-
-      if (optind != argc && !strcmp (argv[optind], "--"))
-	{
-	  optind++;
-
-	  if (first_nonopt != last_nonopt && last_nonopt != optind)
-	    exchange ((char **) argv);
-	  else if (first_nonopt == last_nonopt)
-	    first_nonopt = optind;
-	  last_nonopt = argc;
-
-	  optind = argc;
-	}
-
-      /* If we have done all the ARGV-elements, stop the scan
-	 and back over any non-options that we skipped and permuted.  */
-
-      if (optind == argc)
-	{
-	  /* Set the next-arg-index to point at the non-options
-	     that we previously skipped, so the caller will digest them.  */
-	  if (first_nonopt != last_nonopt)
-	    optind = first_nonopt;
-	  return -1;
-	}
-
-      /* If we have come to a non-option and did not permute it,
-	 either stop the scan or describe it to the caller and pass it by.  */
-
-      if (NONOPTION_P)
-	{
-	  if (ordering == REQUIRE_ORDER)
-	    return -1;
-	  optarg = argv[optind++];
-	  return 1;
-	}
-
-      /* We have found another option-ARGV-element.
-	 Skip the initial punctuation.  */
-
-      nextchar = (argv[optind] + 1
-		  + (longopts != NULL && argv[optind][1] == '-'));
-    }
-
-  /* Decode the current option-ARGV-element.  */
-
-  /* Check whether the ARGV-element is a long option.
-
-     If long_only and the ARGV-element has the form "-f", where f is
-     a valid short option, don't consider it an abbreviated form of
-     a long option that starts with f.  Otherwise there would be no
-     way to give the -f short option.
-
-     On the other hand, if there's a long option "fubar" and
-     the ARGV-element is "-fu", do consider that an abbreviation of
-     the long option, just like "--fu", and not "-f" with arg "u".
-
-     This distinction seems to be the most useful approach.  */
-
-  if (longopts != NULL
-      && (argv[optind][1] == '-'
-	  || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
-    {
-      char *nameend;
-      const struct option *p;
-      const struct option *pfound = NULL;
-      int exact = 0;
-      int ambig = 0;
-      int indfound = -1;
-      int option_index;
-
-      for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
-	/* Do nothing.  */ ;
-
-      /* Test all long options for either exact match
-	 or abbreviated matches.  */
-      for (p = longopts, option_index = 0; p->name; p++, option_index++)
-	if (!strncmp (p->name, nextchar, nameend - nextchar))
-	  {
-	    if ((unsigned int) (nameend - nextchar)
-		== (unsigned int) strlen (p->name))
-	      {
-		/* Exact match found.  */
-		pfound = p;
-		indfound = option_index;
-		exact = 1;
-		break;
-	      }
-	    else if (pfound == NULL)
-	      {
-		/* First nonexact match found.  */
-		pfound = p;
-		indfound = option_index;
-	      }
-	    else if (long_only
-		     || pfound->has_arg != p->has_arg
-		     || pfound->flag != p->flag
-		     || pfound->val != p->val)
-	      /* Second or later nonexact match found.  */
-	      ambig = 1;
-	  }
-
-      if (ambig && !exact)
-	{
-	  if (print_errors)
-	    {
-#if defined _LIBC && defined USE_IN_LIBIO
-	      char *buf;
-
-	      if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
-			      argv[0], argv[optind]) >= 0)
-		{
-
-		  if (_IO_fwide (stderr, 0) > 0)
-		    __fwprintf (stderr, L"%s", buf);
-		  else
-		    fputs (buf, stderr);
-
-		  free (buf);
-		}
-#else
-	      fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
-		       argv[0], argv[optind]);
-#endif
-	    }
-	  nextchar += strlen (nextchar);
-	  optind++;
-	  optopt = 0;
-	  return '?';
-	}
-
-      if (pfound != NULL)
-	{
-	  option_index = indfound;
-	  optind++;
-	  if (*nameend)
-	    {
-	      /* Don't test has_arg with >, because some C compilers don't
-		 allow it to be used on enums.  */
-	      if (pfound->has_arg)
-		optarg = nameend + 1;
-	      else
-		{
-		  if (print_errors)
-		    {
-#if defined _LIBC && defined USE_IN_LIBIO
-		      char *buf;
-		      int n;
-#endif
-
-		      if (argv[optind - 1][1] == '-')
-			{
-			  /* --option */
-#if defined _LIBC && defined USE_IN_LIBIO
-			  n = __asprintf (&buf, _("\
-%s: option `--%s' doesn't allow an argument\n"),
-					  argv[0], pfound->name);
-#else
-			  fprintf (stderr, _("\
-%s: option `--%s' doesn't allow an argument\n"),
-				   argv[0], pfound->name);
-#endif
-			}
-		      else
-			{
-			  /* +option or -option */
-#if defined _LIBC && defined USE_IN_LIBIO
-			  n = __asprintf (&buf, _("\
-%s: option `%c%s' doesn't allow an argument\n"),
-					  argv[0], argv[optind - 1][0],
-					  pfound->name);
-#else
-			  fprintf (stderr, _("\
-%s: option `%c%s' doesn't allow an argument\n"),
-				   argv[0], argv[optind - 1][0], pfound->name);
-#endif
-			}
-
-#if defined _LIBC && defined USE_IN_LIBIO
-		      if (n >= 0)
-			{
-			  if (_IO_fwide (stderr, 0) > 0)
-			    __fwprintf (stderr, L"%s", buf);
-			  else
-			    fputs (buf, stderr);
-
-			  free (buf);
-			}
-#endif
-		    }
-
-		  nextchar += strlen (nextchar);
-
-		  optopt = pfound->val;
-		  return '?';
-		}
-	    }
-	  else if (pfound->has_arg == 1)
-	    {
-	      if (optind < argc)
-		optarg = argv[optind++];
-	      else
-		{
-		  if (print_errors)
-		    {
-#if defined _LIBC && defined USE_IN_LIBIO
-		      char *buf;
-
-		      if (__asprintf (&buf, _("\
-%s: option `%s' requires an argument\n"),
-				      argv[0], argv[optind - 1]) >= 0)
-			{
-			  if (_IO_fwide (stderr, 0) > 0)
-			    __fwprintf (stderr, L"%s", buf);
-			  else
-			    fputs (buf, stderr);
-
-			  free (buf);
-			}
-#else
-		      fprintf (stderr,
-			       _("%s: option `%s' requires an argument\n"),
-			       argv[0], argv[optind - 1]);
-#endif
-		    }
-		  nextchar += strlen (nextchar);
-		  optopt = pfound->val;
-		  return optstring[0] == ':' ? ':' : '?';
-		}
-	    }
-	  nextchar += strlen (nextchar);
-	  if (longind != NULL)
-	    *longind = option_index;
-	  if (pfound->flag)
-	    {
-	      *(pfound->flag) = pfound->val;
-	      return 0;
-	    }
-	  return pfound->val;
-	}
-
-      /* Can't find it as a long option.  If this is not getopt_long_only,
-	 or the option starts with '--' or is not a valid short
-	 option, then it's an error.
-	 Otherwise interpret it as a short option.  */
-      if (!long_only || argv[optind][1] == '-'
-	  || my_index (optstring, *nextchar) == NULL)
-	{
-	  if (print_errors)
-	    {
-#if defined _LIBC && defined USE_IN_LIBIO
-	      char *buf;
-	      int n;
-#endif
-
-	      if (argv[optind][1] == '-')
-		{
-		  /* --option */
-#if defined _LIBC && defined USE_IN_LIBIO
-		  n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
-				  argv[0], nextchar);
-#else
-		  fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
-			   argv[0], nextchar);
-#endif
-		}
-	      else
-		{
-		  /* +option or -option */
-#if defined _LIBC && defined USE_IN_LIBIO
-		  n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
-				  argv[0], argv[optind][0], nextchar);
-#else
-		  fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
-			   argv[0], argv[optind][0], nextchar);
-#endif
-		}
-
-#if defined _LIBC && defined USE_IN_LIBIO
-	      if (n >= 0)
-		{
-		  if (_IO_fwide (stderr, 0) > 0)
-		    __fwprintf (stderr, L"%s", buf);
-		  else
-		    fputs (buf, stderr);
-
-		  free (buf);
-		}
-#endif
-	    }
-	  nextchar = (char *) "";
-	  optind++;
-	  optopt = 0;
-	  return '?';
-	}
-    }
-
-  /* Look at and handle the next short option-character.  */
-
-  {
-    char c = *nextchar++;
-    char *temp = my_index (optstring, c);
-
-    /* Increment `optind' when we start to process its last character.  */
-    if (*nextchar == '\0')
-      ++optind;
-
-    if (temp == NULL || c == ':')
-      {
-	if (print_errors)
-	  {
-#if defined _LIBC && defined USE_IN_LIBIO
-	      char *buf;
-	      int n;
-#endif
-
-	    if (posixly_correct)
-	      {
-		/* 1003.2 specifies the format of this message.  */
-#if defined _LIBC && defined USE_IN_LIBIO
-		n = __asprintf (&buf, _("%s: illegal option -- %c\n"),
-				argv[0], c);
-#else
-		fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
-#endif
-	      }
-	    else
-	      {
-#if defined _LIBC && defined USE_IN_LIBIO
-		n = __asprintf (&buf, _("%s: invalid option -- %c\n"),
-				argv[0], c);
-#else
-		fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
-#endif
-	      }
-
-#if defined _LIBC && defined USE_IN_LIBIO
-	    if (n >= 0)
-	      {
-		if (_IO_fwide (stderr, 0) > 0)
-		  __fwprintf (stderr, L"%s", buf);
-		else
-		  fputs (buf, stderr);
-
-		free (buf);
-	      }
-#endif
-	  }
-	optopt = c;
-	return '?';
-      }
-    /* Convenience. Treat POSIX -W foo same as long option --foo */
-    if (temp[0] == 'W' && temp[1] == ';')
-      {
-	char *nameend;
-	const struct option *p;
-	const struct option *pfound = NULL;
-	int exact = 0;
-	int ambig = 0;
-	int indfound = 0;
-	int option_index;
-
-	/* This is an option that requires an argument.  */
-	if (*nextchar != '\0')
-	  {
-	    optarg = nextchar;
-	    /* If we end this ARGV-element by taking the rest as an arg,
-	       we must advance to the next element now.  */
-	    optind++;
-	  }
-	else if (optind == argc)
-	  {
-	    if (print_errors)
-	      {
-		/* 1003.2 specifies the format of this message.  */
-#if defined _LIBC && defined USE_IN_LIBIO
-		char *buf;
-
-		if (__asprintf (&buf,
-				_("%s: option requires an argument -- %c\n"),
-				argv[0], c) >= 0)
-		  {
-		    if (_IO_fwide (stderr, 0) > 0)
-		      __fwprintf (stderr, L"%s", buf);
-		    else
-		      fputs (buf, stderr);
-
-		    free (buf);
-		  }
-#else
-		fprintf (stderr, _("%s: option requires an argument -- %c\n"),
-			 argv[0], c);
-#endif
-	      }
-	    optopt = c;
-	    if (optstring[0] == ':')
-	      c = ':';
-	    else
-	      c = '?';
-	    return c;
-	  }
-	else
-	  /* We already incremented `optind' once;
-	     increment it again when taking next ARGV-elt as argument.  */
-	  optarg = argv[optind++];
-
-	/* optarg is now the argument, see if it's in the
-	   table of longopts.  */
-
-	for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
-	  /* Do nothing.  */ ;
-
-	/* Test all long options for either exact match
-	   or abbreviated matches.  */
-	for (p = longopts, option_index = 0; p->name; p++, option_index++)
-	  if (!strncmp (p->name, nextchar, nameend - nextchar))
-	    {
-	      if ((unsigned int) (nameend - nextchar) == strlen (p->name))
-		{
-		  /* Exact match found.  */
-		  pfound = p;
-		  indfound = option_index;
-		  exact = 1;
-		  break;
-		}
-	      else if (pfound == NULL)
-		{
-		  /* First nonexact match found.  */
-		  pfound = p;
-		  indfound = option_index;
-		}
-	      else
-		/* Second or later nonexact match found.  */
-		ambig = 1;
-	    }
-	if (ambig && !exact)
-	  {
-	    if (print_errors)
-	      {
-#if defined _LIBC && defined USE_IN_LIBIO
-		char *buf;
-
-		if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
-				argv[0], argv[optind]) >= 0)
-		  {
-		    if (_IO_fwide (stderr, 0) > 0)
-		      __fwprintf (stderr, L"%s", buf);
-		    else
-		      fputs (buf, stderr);
-
-		    free (buf);
-		  }
-#else
-		fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
-			 argv[0], argv[optind]);
-#endif
-	      }
-	    nextchar += strlen (nextchar);
-	    optind++;
-	    return '?';
-	  }
-	if (pfound != NULL)
-	  {
-	    option_index = indfound;
-	    if (*nameend)
-	      {
-		/* Don't test has_arg with >, because some C compilers don't
-		   allow it to be used on enums.  */
-		if (pfound->has_arg)
-		  optarg = nameend + 1;
-		else
-		  {
-		    if (print_errors)
-		      {
-#if defined _LIBC && defined USE_IN_LIBIO
-			char *buf;
-
-			if (__asprintf (&buf, _("\
-%s: option `-W %s' doesn't allow an argument\n"),
-					argv[0], pfound->name) >= 0)
-			  {
-			    if (_IO_fwide (stderr, 0) > 0)
-			      __fwprintf (stderr, L"%s", buf);
-			    else
-			      fputs (buf, stderr);
-
-			    free (buf);
-			  }
-#else
-			fprintf (stderr, _("\
-%s: option `-W %s' doesn't allow an argument\n"),
-				 argv[0], pfound->name);
-#endif
-		      }
-
-		    nextchar += strlen (nextchar);
-		    return '?';
-		  }
-	      }
-	    else if (pfound->has_arg == 1)
-	      {
-		if (optind < argc)
-		  optarg = argv[optind++];
-		else
-		  {
-		    if (print_errors)
-		      {
-#if defined _LIBC && defined USE_IN_LIBIO
-			char *buf;
-
-			if (__asprintf (&buf, _("\
-%s: option `%s' requires an argument\n"),
-					argv[0], argv[optind - 1]) >= 0)
-			  {
-			    if (_IO_fwide (stderr, 0) > 0)
-			      __fwprintf (stderr, L"%s", buf);
-			    else
-			      fputs (buf, stderr);
-
-			    free (buf);
-			  }
-#else
-			fprintf (stderr,
-				 _("%s: option `%s' requires an argument\n"),
-				 argv[0], argv[optind - 1]);
-#endif
-		      }
-		    nextchar += strlen (nextchar);
-		    return optstring[0] == ':' ? ':' : '?';
-		  }
-	      }
-	    nextchar += strlen (nextchar);
-	    if (longind != NULL)
-	      *longind = option_index;
-	    if (pfound->flag)
-	      {
-		*(pfound->flag) = pfound->val;
-		return 0;
-	      }
-	    return pfound->val;
-	  }
-	  nextchar = NULL;
-	  return 'W';	/* Let the application handle it.   */
-      }
-    if (temp[1] == ':')
-      {
-	if (temp[2] == ':')
-	  {
-	    /* This is an option that accepts an argument optionally.  */
-	    if (*nextchar != '\0')
-	      {
-		optarg = nextchar;
-		optind++;
-	      }
-	    else
-	      optarg = NULL;
-	    nextchar = NULL;
-	  }
-	else
-	  {
-	    /* This is an option that requires an argument.  */
-	    if (*nextchar != '\0')
-	      {
-		optarg = nextchar;
-		/* If we end this ARGV-element by taking the rest as an arg,
-		   we must advance to the next element now.  */
-		optind++;
-	      }
-	    else if (optind == argc)
-	      {
-		if (print_errors)
-		  {
-		    /* 1003.2 specifies the format of this message.  */
-#if defined _LIBC && defined USE_IN_LIBIO
-		    char *buf;
-
-		    if (__asprintf (&buf, _("\
-%s: option requires an argument -- %c\n"),
-				    argv[0], c) >= 0)
-		      {
-			if (_IO_fwide (stderr, 0) > 0)
-			  __fwprintf (stderr, L"%s", buf);
-			else
-			  fputs (buf, stderr);
-
-			free (buf);
-		      }
-#else
-		    fprintf (stderr,
-			     _("%s: option requires an argument -- %c\n"),
-			     argv[0], c);
-#endif
-		  }
-		optopt = c;
-		if (optstring[0] == ':')
-		  c = ':';
-		else
-		  c = '?';
-	      }
-	    else
-	      /* We already incremented `optind' once;
-		 increment it again when taking next ARGV-elt as argument.  */
-	      optarg = argv[optind++];
-	    nextchar = NULL;
-	  }
-      }
-    return c;
-  }
-}
-
-int
-getopt (argc, argv, optstring)
-     int argc;
-     char *const *argv;
-     const char *optstring;
-{
-  return _getopt_internal (argc, argv, optstring,
-			   (const struct option *) 0,
-			   (int *) 0,
-			   0);
-}
-
-#endif	/* Not ELIDE_CODE.  */
-
-#ifdef TEST
-
-/* Compile with -DTEST to make an executable for use in testing
-   the above definition of `getopt'.  */
-
-int
-main (argc, argv)
-     int argc;
-     char **argv;
-{
-  int c;
-  int digit_optind = 0;
-
-  while (1)
-    {
-      int this_option_optind = optind ? optind : 1;
-
-      c = getopt (argc, argv, "abc:d:0123456789");
-      if (c == -1)
-	break;
-
-      switch (c)
-	{
-	case '0':
-	case '1':
-	case '2':
-	case '3':
-	case '4':
-	case '5':
-	case '6':
-	case '7':
-	case '8':
-	case '9':
-	  if (digit_optind != 0 && digit_optind != this_option_optind)
-	    printf ("digits occur in two different argv-elements.\n");
-	  digit_optind = this_option_optind;
-	  printf ("option %c\n", c);
-	  break;
-
-	case 'a':
-	  printf ("option a\n");
-	  break;
-
-	case 'b':
-	  printf ("option b\n");
-	  break;
-
-	case 'c':
-	  printf ("option c with value `%s'\n", optarg);
-	  break;
-
-	case '?':
-	  break;
-
-	default:
-	  printf ("?? getopt returned character code 0%o ??\n", c);
-	}
-    }
-
-  if (optind < argc)
-    {
-      printf ("non-option ARGV-elements: ");
-      while (optind < argc)
-	printf ("%s ", argv[optind++]);
-      printf ("\n");
-    }
-
-  exit (0);
-}
-
-#endif /* TEST */
-
diff --git a/build.vc12/getopt.h b/build.vc12/getopt.h
deleted file mode 100644
index 95084d11..00000000
--- a/build.vc12/getopt.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/* Declarations for getopt.
-   Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#ifndef _GETOPT_H
-
-#ifndef __need_getopt
-# define _GETOPT_H 1
-#endif
-
-/* If __GNU_LIBRARY__ is not already defined, either we are being used
-   standalone, or this is the first header included in the source file.
-   If we are being used with glibc, we need to include <features.h>, but
-   that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
-   not defined, include <ctype.h>, which will pull in <features.h> for us
-   if it's from glibc.  (Why ctype.h?  It's guaranteed to exist and it
-   doesn't flood the namespace with stuff the way some other headers do.)  */
-#if !defined __GNU_LIBRARY__
-# include <ctype.h>
-#endif
-
-#ifdef	__cplusplus
-extern "C" {
-#endif
-
-/* For communication from `getopt' to the caller.
-   When `getopt' finds an option that takes an argument,
-   the argument value is returned here.
-   Also, when `ordering' is RETURN_IN_ORDER,
-   each non-option ARGV-element is returned here.  */
-
-extern char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
-   This is used for communication to and from the caller
-   and for communication between successive calls to `getopt'.
-
-   On entry to `getopt', zero means this is the first call; initialize.
-
-   When `getopt' returns -1, this is the index of the first of the
-   non-option elements that the caller should itself scan.
-
-   Otherwise, `optind' communicates from one call to the next
-   how much of ARGV has been scanned so far.  */
-
-extern int optind;
-
-/* Callers store zero here to inhibit the error message `getopt' prints
-   for unrecognized options.  */
-
-extern int opterr;
-
-/* Set to an option character which was unrecognized.  */
-
-extern int optopt;
-
-#ifndef __need_getopt
-/* Describe the long-named options requested by the application.
-   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
-   of `struct option' terminated by an element containing a name which is
-   zero.
-
-   The field `has_arg' is:
-   no_argument		(or 0) if the option does not take an argument,
-   required_argument	(or 1) if the option requires an argument,
-   optional_argument 	(or 2) if the option takes an optional argument.
-
-   If the field `flag' is not NULL, it points to a variable that is set
-   to the value given in the field `val' when the option is found, but
-   left unchanged if the option is not found.
-
-   To have a long-named option do something other than set an `int' to
-   a compiled-in constant, such as set a value from `optarg', set the
-   option's `flag' field to zero and its `val' field to a nonzero
-   value (the equivalent single-letter option character, if there is
-   one).  For long options that have a zero `flag' field, `getopt'
-   returns the contents of the `val' field.  */
-
-struct option
-{
-# if (defined __STDC__ && __STDC__) || defined __cplusplus
-  const char *name;
-# else
-  char *name;
-# endif
-  /* has_arg can't be an enum because some compilers complain about
-     type mismatches in all the code that assumes it is an int.  */
-  int has_arg;
-  int *flag;
-  int val;
-};
-
-/* Names for the values of the `has_arg' field of `struct option'.  */
-
-# define no_argument		0
-# define required_argument	1
-# define optional_argument	2
-#endif	/* need getopt */
-
-
-/* Get definitions and prototypes for functions to process the
-   arguments in ARGV (ARGC of them, minus the program name) for
-   options given in OPTS.
-
-   Return the option character from OPTS just read.  Return -1 when
-   there are no more options.  For unrecognized options, or options
-   missing arguments, `optopt' is set to the option letter, and '?' is
-   returned.
-
-   The OPTS string is a list of characters which are recognized option
-   letters, optionally followed by colons, specifying that that letter
-   takes an argument, to be placed in `optarg'.
-
-   If a letter in OPTS is followed by two colons, its argument is
-   optional.  This behavior is specific to the GNU `getopt'.
-
-   The argument `--' causes premature termination of argument
-   scanning, explicitly telling `getopt' that there are no more
-   options.
-
-   If OPTS begins with `--', then non-option arguments are treated as
-   arguments to the option '\0'.  This behavior is specific to the GNU
-   `getopt'.  */
-
-#if (defined __STDC__ && __STDC__) || defined __cplusplus
-# ifdef __GNU_LIBRARY__
-/* Many other libraries have conflicting prototypes for getopt, with
-   differences in the consts, in stdlib.h.  To avoid compilation
-   errors, only prototype getopt for the GNU C library.  */
-extern int getopt (int ___argc, char *const *___argv, const char *__shortopts);
-# else /* not __GNU_LIBRARY__ */
-extern int getopt ();
-# endif /* __GNU_LIBRARY__ */
-
-# ifndef __need_getopt
-extern int getopt_long (int ___argc, char *const *___argv,
-			const char *__shortopts,
-		        const struct option *__longopts, int *__longind);
-extern int getopt_long_only (int ___argc, char *const *___argv,
-			     const char *__shortopts,
-		             const struct option *__longopts, int *__longind);
-
-/* Internal only.  Users should not call this directly.  */
-extern int _getopt_internal (int ___argc, char *const *___argv,
-			     const char *__shortopts,
-		             const struct option *__longopts, int *__longind,
-			     int __long_only);
-# endif
-#else /* not __STDC__ */
-extern int getopt ();
-# ifndef __need_getopt
-extern int getopt_long ();
-extern int getopt_long_only ();
-
-extern int _getopt_internal ();
-# endif
-#endif /* __STDC__ */
-
-#ifdef	__cplusplus
-}
-#endif
-
-/* Make sure we later can get all the definitions and declarations.  */
-#undef __need_getopt
-
-#endif /* getopt.h */
-
diff --git a/build.vc12/getrusage.c b/build.vc12/getrusage.c
deleted file mode 100644
index deea4b13..00000000
--- a/build.vc12/getrusage.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*  This file is part of the MPIR Library.
-
-    The MPIR Library is free software; you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published
-    by the Free Software Foundation; either version 2.1 of the License, or (at
-    your option) any later version.
-    The MPIR Library is distributed in the hope that it will be useful, but
-    WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-    License for more details.
-    You should have received a copy of the GNU Lesser General Public License
-    along with the MPIR Library; see the file COPYING.LIB.  If not, write
-    to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-    Boston, MA 02110-1301, USA.
-*/
-
-#define WIN32_LEAN_AND_MEAN
-
-#include <windows.h>
-#include <psapi.h>
-#include <errno.h>
-
-#include "getrusage.h"
-
-typedef union file_t
-{   FILETIME ft;
-    long long lt;
-} file_t;
-
-int getrusage(int who, rusage *usage)
-{
-    HANDLE proc_hand;
-    file_t c_time, x_time, s_time, u_time;
-    int cb = 0, err = -1;
-
-    if(who != RUSAGE_SELF) 
-    {
-        errno = (who == RUSAGE_CHILDREN ? ENODATA : EINVAL); 
-        return err;
-    }
-
-    proc_hand = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, GetCurrentProcessId());
-
-    if(GetProcessTimes(proc_hand, &(c_time.ft), &(x_time.ft), &(s_time.ft), &(u_time.ft))) 
-    {
-        PROCESS_MEMORY_COUNTERS ctrs;
-        
-        /* The units returned by GetProcessTimes are 100 nanoseconds */
-        u_time.lt = (u_time.lt + 5) / 10;
-        s_time.lt = (s_time.lt + 5) / 10;
-
-        usage->ru_utime.tv_sec  = (long)(u_time.lt / 1000000ll);
-        usage->ru_stime.tv_sec  = (long)(s_time.lt / 1000000ll);
-        usage->ru_utime.tv_usec = (long)(u_time.lt % 1000000ll);
-        usage->ru_stime.tv_usec = (long)(s_time.lt % 1000000ll);
-
-        if(GetProcessMemoryInfo(proc_hand, &ctrs, sizeof(ctrs))) 
-        {
-            PERFORMANCE_INFORMATION perf_info;
-            GetPerformanceInfo(&perf_info, sizeof(perf_info));
-            usage->ru_maxrss = (DWORD) (ctrs.WorkingSetSize / perf_info.PageSize);
-            usage->ru_majflt = ctrs.PageFaultCount;
-            err = 0;
-        }
-    }
-
-    if(err)
-        errno = EACCES;
-    CloseHandle(proc_hand);
-    return err;
-}
diff --git a/build.vc12/getrusage.h b/build.vc12/getrusage.h
deleted file mode 100644
index f449c434..00000000
--- a/build.vc12/getrusage.h
+++ /dev/null
@@ -1,46 +0,0 @@
-
-#ifndef _GETRUSAGE_H
-#define _GETRUSAGE_H
-
-#if defined(__cplusplus)
-extern "C"
-{
-#endif
-
-#define ENODATA         61
-#define	RUSAGE_SELF	     0
-#define	RUSAGE_CHILDREN	-1
-
-typedef struct
-{
-    long            tv_sec;
-    long            tv_usec;
-} tval;
-
-typedef struct rusage
-{
-    tval  ru_utime;   /* user time used                      */
-    tval  ru_stime;   /* system time used                    */
-    long     ru_maxrss;  /* integral max resident set size      */
-    long     ru_ixrss;   /* integral shared text memory size    */
-    long     ru_idrss;   /* integral unshared data size         */
-    long     ru_isrss;   /* integral unshared stack size        */
-    long     ru_minflt;  /* page reclaims                       */
-    long     ru_majflt;  /* page faults                         */
-    long     ru_nswap;   /* swaps                               */
-    long     ru_inblock; /* block input operations              */
-    long     ru_oublock; /* block output operations             */
-    long     ru_msgsnd;  /* messages sent                       */
-    long     ru_msgrcv;  /* messages received                   */
-    long     ru_nsignals;/* signals received                    */
-    long     ru_nvcsw;   /* voluntary context switches          */
-    long     ru_nivcsw;  /* involuntary context switches        */
-} rusage;
-
-int getrusage(int who, rusage *usage);
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif
diff --git a/build.vc12/gettimeofday.c b/build.vc12/gettimeofday.c
deleted file mode 100644
index d576e24e..00000000
--- a/build.vc12/gettimeofday.c
+++ /dev/null
@@ -1,39 +0,0 @@
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include <time.h>
-
-#include "gettimeofday.h"
-
-int gettimeofday(struct timeval *tv, struct timezone *tz)
-{
-    FILETIME        ft;
-    LARGE_INTEGER   li;
-    __int64         t;
-    static int      tzflag;
-
-    if(tv)
-    {
-        GetSystemTimeAsFileTime(&ft);
-        li.LowPart  = ft.dwLowDateTime;
-        li.HighPart = ft.dwHighDateTime;
-        t  = li.QuadPart; 
-        t -= EPOCHFILETIME;
-        t /= 10;
-        tv->tv_sec  = (long)(t / 1000000);
-        tv->tv_usec = (long)(t % 1000000);
-    }
-
-    if (tz)
-    {
-        if (!tzflag)
-        {
-            _tzset();
-            tzflag++;
-        }
-        tz->tz_minuteswest = _timezone / 60;
-        tz->tz_dsttime = _daylight;
-    }
-
-    return 0;
-}
diff --git a/build.vc12/gettimeofday.h b/build.vc12/gettimeofday.h
deleted file mode 100644
index 1c9dde98..00000000
--- a/build.vc12/gettimeofday.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * timeval.h    1.0 01/12/19
- *
- * Defines gettimeofday, timeval, etc. for Win32
- *
- * By Wu Yongwei
- *
- */
-#ifndef _TIMEVAL_H
-#define _TIMEVAL_H
-
-#include <winsock2.h>
-
-#define EPOCHFILETIME (116444736000000000LL)
-
-#if defined(__cplusplus)
-extern "C"
-{
-#endif
-
-struct timezone 
-{
-    int tz_minuteswest; /* minutes W of Greenwich */
-    int tz_dsttime;     /* type of dst correction */
-};
-
-int gettimeofday(struct timeval *tv, struct timezone *tz);
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* _TIMEVAL_H */
-
diff --git a/build.vc12/libecm/Makefile.am b/build.vc12/libecm/Makefile.am
deleted file mode 100644
index bdadb817..00000000
--- a/build.vc12/libecm/Makefile.am
+++ /dev/null
@@ -1,2 +0,0 @@
-EXTRA_DIST = libecm.vcxproj libecm.vcxproj.filters
- 
diff --git a/build.vc12/libecm/libecm.vcxproj b/build.vc12/libecm/libecm.vcxproj
deleted file mode 100644
index d921bd0a..00000000
--- a/build.vc12/libecm/libecm.vcxproj
+++ /dev/null
@@ -1,266 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{CD555681-D65B-4173-A29C-B8BF06A4871B}</ProjectGuid>
-    <RootNamespace>libecm</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfAtl>Static</UseOfAtl>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="..\vsyasm.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <PreBuildEvent>
-      <Command>..\prebuild NO_GPU</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;SSE2;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <PreBuildEvent>
-      <Command>..\prebuild NO_GPU</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;NDEBUG;_LIB;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-    <Lib />
-    <YASM>
-      <Defines>_WIN64</Defines>
-    </YASM>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <PreBuildEvent>
-      <Command>..\prebuild NO_GPU</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;SSE2;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <PreBuildEvent>
-      <Command>..\prebuild NO_GPU</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;_DEBUG;_LIB;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-    <Lib />
-    <YASM>
-      <Defines>_WIN64</Defines>
-    </YASM>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm" />
-    <YASM Include="..\assembler\redc.asm" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\addlaws.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\..\aprtcle\aprcl.c" />
-    <ClCompile Include="..\..\aprtcle\mpz_aprcl.c" />
-    <ClCompile Include="..\..\auxarith.c" />
-    <ClCompile Include="..\..\auxlib.c" />
-    <ClCompile Include="..\..\batch.c" />
-    <ClCompile Include="..\..\bestd.c" />
-    <ClCompile Include="..\..\cudawrapper.c" />
-    <ClCompile Include="..\..\ecm.c" />
-    <ClCompile Include="..\..\ecm2.c" />
-    <ClCompile Include="..\..\ecm_ntt.c" />
-    <ClCompile Include="..\..\factor.c" />
-    <ClCompile Include="..\..\getprime_r.c" />
-    <ClCompile Include="..\..\ks-multiply.c" />
-    <ClCompile Include="..\..\listz.c" />
-    <ClCompile Include="..\..\listz_handle.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\..\lucas.c" />
-    <ClCompile Include="..\..\median.c" />
-    <ClCompile Include="..\..\memusage.c" />
-    <ClCompile Include="..\..\mpmod.c" />
-    <ClCompile Include="..\..\mpzspm.c" />
-    <ClCompile Include="..\..\mpzspv.c" />
-    <ClCompile Include="..\..\mul_lo.c" />
-    <ClCompile Include="..\..\ntt_gfp.c" />
-    <ClCompile Include="..\..\parametrizations.c" />
-    <ClCompile Include="..\..\pm1.c" />
-    <ClCompile Include="..\..\pm1fs2.c" />
-    <ClCompile Include="..\..\polyeval.c" />
-    <ClCompile Include="..\..\pp1.c" />
-    <ClCompile Include="..\..\random.c" />
-    <ClCompile Include="..\..\rho.c" />
-    <ClCompile Include="..\..\schoen_strass.c" />
-    <ClCompile Include="..\..\sets_long.c" />
-    <ClCompile Include="..\..\sp.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\spm.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\spv.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\stage2.c" />
-    <ClCompile Include="..\..\torsions.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-    <ClInclude Include="..\..\addlaws.h">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </ClInclude>
-    <ClInclude Include="..\..\aprtcle\jacobi_sum.h" />
-    <ClInclude Include="..\..\aprtcle\mpz_aprcl.h" />
-    <ClInclude Include="..\..\champions.h" />
-    <ClInclude Include="..\..\config.h" />
-    <ClInclude Include="..\..\ecm-ecm.h" />
-    <ClInclude Include="..\..\ecm-gmp.h" />
-    <ClInclude Include="..\..\ecm-gpu.h" />
-    <ClInclude Include="..\..\ecm-impl.h" />
-    <ClInclude Include="..\..\ecm-params.h" />
-    <ClInclude Include="..\..\ecm.h" />
-    <ClInclude Include="..\..\getprime_r.h" />
-    <ClInclude Include="..\..\listz_handle.h" />
-    <ClInclude Include="..\..\longlong.h" />
-    <ClInclude Include="..\..\sp.h" />
-    <ClInclude Include="..\..\torsions.h">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </ClInclude>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="..\vsyasm.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc12/libecm/libecm.vcxproj.filters b/build.vc12/libecm/libecm.vcxproj.filters
deleted file mode 100644
index c1ead394..00000000
--- a/build.vc12/libecm/libecm.vcxproj.filters
+++ /dev/null
@@ -1,193 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Source Files\Assembler">
-      <UniqueIdentifier>{2f18179f-5dba-420c-8dc7-bc7f8228a1b2}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm">
-      <Filter>Source Files\Assembler</Filter>
-    </YASM>
-    <YASM Include="..\assembler\redc.asm">
-      <Filter>Source Files\Assembler</Filter>
-    </YASM>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxarith.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\auxlib.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\bestd.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm_ntt.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\factor.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ks-multiply.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\listz.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\lucas.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\median.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpmod.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mul_lo.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ntt_gfp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pm1.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pm1fs2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\polyeval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pp1.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\random.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\rho.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\schoen_strass.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\sets_long.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\sp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\stage2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\batch.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\parametrizations.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\cudawrapper.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\addlaws.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\listz_handle.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\torsions.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\aprtcle\aprcl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\aprtcle\mpz_aprcl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\memusage.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\getprime_r.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\sp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\champions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gpu.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\addlaws.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\listz_handle.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\torsions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\aprtcle\jacobi_sum.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\aprtcle\mpz_aprcl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\getprime_r.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc12/libecm_gpu/Makefile.am b/build.vc12/libecm_gpu/Makefile.am
deleted file mode 100644
index 3885d988..00000000
--- a/build.vc12/libecm_gpu/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = libecm_gpu.vcxproj libecm_gpu.vcxproj.filters
diff --git a/build.vc12/libecm_gpu/libecm_gpu.vcxproj b/build.vc12/libecm_gpu/libecm_gpu.vcxproj
deleted file mode 100644
index d2882696..00000000
--- a/build.vc12/libecm_gpu/libecm_gpu.vcxproj
+++ /dev/null
@@ -1,330 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}</ProjectGuid>
-    <RootNamespace>libecm_gpu</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfAtl>Static</UseOfAtl>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="..\vsyasm.props" />
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 7.5.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ecmlib</TargetName>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <PreBuildEvent>
-      <Command>..\prebuild GPU</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC30;NDEBUG;_LIB;SSE2;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <Optimization>Full</Optimization>
-    </ClCompile>
-    <Lib />
-    <CudaCompile>
-      <CodeGeneration>compute_30,sm_30</CodeGeneration>
-    </CudaCompile>
-    <CudaCompile>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <TargetMachinePlatform>32</TargetMachinePlatform>
-      <MaxRegCount>32</MaxRegCount>
-    </CudaCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-    </ProjectReference>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <PreBuildEvent>
-      <Command>..\prebuild GPU</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC30;_WIN64;NDEBUG;_LIB;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-    <Lib />
-    <YASM>
-      <Defines>_WIN64</Defines>
-    </YASM>
-    <CudaCompile>
-      <CodeGeneration>compute_30,sm_30</CodeGeneration>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <TargetMachinePlatform>64</TargetMachinePlatform>
-      <MaxRegCount>32</MaxRegCount>
-    </CudaCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-    </ProjectReference>
-    <Lib>
-      <AdditionalDependencies>
-      </AdditionalDependencies>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <PreBuildEvent>
-      <Command>..\prebuild GPU</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC30;_DEBUG;_LIB;SSE2;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-    <CudaCompile>
-      <CodeGeneration>compute_30,sm_30</CodeGeneration>
-    </CudaCompile>
-    <CudaCompile>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <TargetMachinePlatform>32</TargetMachinePlatform>
-      <MaxRegCount>32</MaxRegCount>
-    </CudaCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-    </ProjectReference>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <PreBuildEvent>
-      <Command>..\prebuild GPU</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC30;_WIN64;_DEBUG;_LIB;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-    <Lib />
-    <YASM>
-      <Defines>_WIN64</Defines>
-    </YASM>
-    <CudaCompile>
-      <CodeGeneration>compute_30,sm_30</CodeGeneration>
-    </CudaCompile>
-    <CudaCompile>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <TargetMachinePlatform>64</TargetMachinePlatform>
-      <MaxRegCount>32</MaxRegCount>
-    </CudaCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-    </ProjectReference>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm" />
-    <YASM Include="..\assembler\redc.asm" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\addlaws.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\..\aprtcle\aprcl.c" />
-    <ClCompile Include="..\..\aprtcle\mpz_aprcl.c" />
-    <ClCompile Include="..\..\auxarith.c" />
-    <ClCompile Include="..\..\auxlib.c" />
-    <ClCompile Include="..\..\batch.c" />
-    <ClCompile Include="..\..\bestd.c" />
-    <ClCompile Include="..\..\cudawrapper.c" />
-    <ClCompile Include="..\..\ecm.c" />
-    <ClCompile Include="..\..\ecm2.c" />
-    <ClCompile Include="..\..\ecm_ntt.c" />
-    <ClCompile Include="..\..\factor.c" />
-    <ClCompile Include="..\..\getprime_r.c" />
-    <ClCompile Include="..\..\ks-multiply.c" />
-    <ClCompile Include="..\..\listz.c" />
-    <ClCompile Include="..\..\listz_handle.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\..\lucas.c" />
-    <ClCompile Include="..\..\median.c" />
-    <ClCompile Include="..\..\mpmod.c" />
-    <ClCompile Include="..\..\mpzspm.c" />
-    <ClCompile Include="..\..\mpzspv.c" />
-    <ClCompile Include="..\..\mul_lo.c" />
-    <ClCompile Include="..\..\ntt_gfp.c" />
-    <ClCompile Include="..\..\parametrizations.c" />
-    <ClCompile Include="..\..\pm1.c" />
-    <ClCompile Include="..\..\pm1fs2.c" />
-    <ClCompile Include="..\..\polyeval.c" />
-    <ClCompile Include="..\..\pp1.c" />
-    <ClCompile Include="..\..\random.c" />
-    <ClCompile Include="..\..\rho.c" />
-    <ClCompile Include="..\..\schoen_strass.c" />
-    <ClCompile Include="..\..\sets_long.c" />
-    <ClCompile Include="..\..\sp.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\spm.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\spv.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\stage2.c" />
-    <ClCompile Include="..\..\torsions.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-    <ClInclude Include="..\..\addlaws.h">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </ClInclude>
-    <ClInclude Include="..\..\aprtcle\jacobi_sum.h" />
-    <ClInclude Include="..\..\aprtcle\mpz_aprcl.h" />
-    <ClInclude Include="..\..\champions.h" />
-    <ClInclude Include="..\..\config.h" />
-    <ClInclude Include="..\..\ecm-ecm.h" />
-    <ClInclude Include="..\..\ecm-gmp.h" />
-    <ClInclude Include="..\..\ecm-gpu.h" />
-    <ClInclude Include="..\..\ecm-impl.h" />
-    <ClInclude Include="..\..\ecm-params.h" />
-    <ClInclude Include="..\..\ecm.h" />
-    <ClInclude Include="..\..\getprime_r.h" />
-    <ClInclude Include="..\..\listz_handle.h" />
-    <ClInclude Include="..\..\longlong.h" />
-    <ClInclude Include="..\..\sp.h" />
-    <ClInclude Include="..\..\torsions.h">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <CudaCompile Include="..\..\cudakernel.cu">
-      <FileType>Document</FileType>
-    </CudaCompile>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="..\vsyasm.targets" />
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 7.5.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc12/libecm_gpu/libecm_gpu.vcxproj.filters b/build.vc12/libecm_gpu/libecm_gpu.vcxproj.filters
deleted file mode 100644
index 14f8e78d..00000000
--- a/build.vc12/libecm_gpu/libecm_gpu.vcxproj.filters
+++ /dev/null
@@ -1,190 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <ClCompile Include="..\..\mpmod.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\addlaws.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\aprtcle\aprcl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\auxarith.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\auxlib.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\batch.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\bestd.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\cudawrapper.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm_ntt.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\factor.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ks-multiply.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\listz.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\listz_handle.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\lucas.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\median.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\aprtcle\mpz_aprcl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mul_lo.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ntt_gfp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\parametrizations.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pm1.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pm1fs2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\polyeval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pp1.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\random.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\rho.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\schoen_strass.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\sets_long.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\sp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\stage2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\torsions.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\getprime_r.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gpu.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\aprtcle\jacobi_sum.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\listz_handle.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\addlaws.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\champions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\aprtcle\mpz_aprcl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\sp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\torsions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\getprime_r.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm">
-      <Filter>Source Files</Filter>
-    </YASM>
-    <YASM Include="..\assembler\redc.asm">
-      <Filter>Source Files</Filter>
-    </YASM>
-  </ItemGroup>
-  <ItemGroup>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{dfe792df-b4ff-4147-be95-190117baae33}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{0315d9d5-3f8f-456a-ae54-e00de69b9350}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <CudaCompile Include="..\..\cudakernel.cu">
-      <Filter>Source Files</Filter>
-    </CudaCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc12/mp_lib.props b/build.vc12/mp_lib.props
deleted file mode 100644
index 54785956..00000000
--- a/build.vc12/mp_lib.props
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="UserMacros">
-    <mp_dir>mpir\</mp_dir>
-    <mp_lib>mpir.lib</mp_lib>
-  </PropertyGroup>
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-  </PropertyGroup>
-  <ItemGroup>
-    <BuildMacro Include="mp_dir">
-      <Value>$(mp_dir)</Value>
-      <EnvironmentVariable>true</EnvironmentVariable>
-    </BuildMacro>
-    <BuildMacro Include="mp_lib">
-      <Value>$(mp_lib)</Value>
-      <EnvironmentVariable>true</EnvironmentVariable>
-    </BuildMacro>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc12/out_copy_rename.bat b/build.vc12/out_copy_rename.bat
deleted file mode 100644
index 5fe442ed..00000000
--- a/build.vc12/out_copy_rename.bat
+++ /dev/null
@@ -1,31 +0,0 @@
-@echo off
-if not exist %1 goto nofile
-if exist %2 goto next
-
-echo creating directory %2
-md %2 > nul
-
-:next
-rem strip quotes if present
-set str=%2
-for /f "useback tokens=*" %%a in ('%str%') do set str=%%~a
-
-rem add a backslash if the output directory lacks one
-set str=%str:~-1%
-if "%str%" == "\" (set outf=%2%3) else (set outf=%2\%3)
-
-echo copying %1 to %outf% (if not present or changed)
-if not exist "%outf%" goto copy
-
-rem don't overwrite if output exists and is not changed
-fc %1 %outf% > nul && if not %errorlevel 1 goto exit
-echo overwriting %outf% with %1
-
-:copy
-copy %1 %outf% > nul
-goto exit
-
-:nofile
-echo %1 not found
-
-:exit
diff --git a/build.vc12/prebuild.bat b/build.vc12/prebuild.bat
deleted file mode 100644
index bbc16852..00000000
--- a/build.vc12/prebuild.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-cd ..\
-call out_copy_rename config.h ..\ config.h
-call gen_ecm_h
diff --git a/build.vc12/python.bat b/build.vc12/python.bat
deleted file mode 100644
index 77b1e718..00000000
--- a/build.vc12/python.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-@echo off
-"c:\program files\python34\python" %1
diff --git a/build.vc12/readme.txt b/build.vc12/readme.txt
deleted file mode 100644
index dd96a017..00000000
--- a/build.vc12/readme.txt
+++ /dev/null
@@ -1,172 +0,0 @@
-
-Building GMP-ECM with Microsoft Visual C++ 2012 (version 11)
-===========================================================
-
-If you wish to build the assembler code support you will need to 
-install the YASM assembler that is available at:
-
-  http://www.tortall.net/projects/yasm/
-
-THe version you need is vsyasm, which should be put it in the same
-directory as your Visual C++ compiler, which is typically:
-
-C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin
-
-The Multi-Precision Library - GMP and MPIR
-==========================================
-
-GMP-ECM works with either GMP or MPIR, a fork of GMP. To build and run
-GMP-ECM using Visual Studio you first need to obtain and build either 
-GMP or MPIR.   MPIR has a fully integrated Visual Studio build system
-for Windows but GMP does not.  
-
-The VC++ build of GMP-ECM now defaults to MPIR but the property sheet 
-mp_lib.vsprops can be edited to set the macro mp_lib to 'gmp' instead 
-of 'mpir' to build ECM using GMP.
-
-GMP
-===
-
-GMP can be built from the GMP source code available here:
-
-  http://gmplib.org/
-  
-GMP can be built with mingw for 32-bit Windows and mingw64 for Windows x64.
-It is reported that the resulting libraries work with Visual Studio when
-appropriately renamed. 
-
-MPIR
-====
-
-MPIR is available here:
-
-  http://www.mpir.org
-  
-It has full support for building MPIR for 32 and 64 bit Windows systems 
-with x86 assembler support using the YASM assembler.  
-
-Building GMP-ECM
-================
-
-The build files for GMP-ECM assume that the GMP and ECM build directories
-are in a common parent directory as follows:
-
-  Parent Directory
-    MPIR (or GMP)
-      build.vc11    -- MPIR (or GMP) build files
-      ...
-    GMP-ECM
-      buid.vc11     -- ECM build files 
-      
-The root directories for GMP and GMP-ECM are assumed to have these names
-irrespective of which version is being used (they used to be followed by 
-version numbers but this meant that the build projects had to be updated
-too frequently). 
-
-The normal (non GPU) build is opened by loading the file ecm.sln (from 
-the build.vc11 directory) into Visual Studio. This provides three build
-projects in build.vc11 for the non GPU build:
-
-    ecm     - the ECM application 
-    ecmlib  - the ECM library
-    tune    - a program for tuning 
-
-The GPU build is opened by loading the file ecm.sln (from  the build.vc11
-directory) into Visual Studio. This provides two build projects in 
-build.vc11:
-
-    ecm_gpu     - the ECM application 
-    ecmlib_gpu  - the ECM library
-
-In all cases you have to choose either a win32 or x64 build and either a
-Release or Debug configuration. 
-
-The non GPU Build
------------------
-
-Before starting a build, there are a number of configuration options
-that need to be set:
-
-1. If you wish to compile GMP-ECM for use on a particular processor,
-   select the appropriate define from the file 'ecm-params.h' in the
-   GMP-ECM root directory and decide which of the defines suit your
-   needs (e.g. __tune_corei7__).  Then replace the existing define:
-   
-   /* define Windows tuning here */
-   #  define __tune_corei7__
- 
-   towards the end of the file config.h file in the 'build.vc11'
-   directory (build.vc11\config.h) with the chosen define.
-
-2. The file at 'build.vc11\mul_fft-params.h' allows the FFT code to
-   be tuned to 32 or 64-bnit systems by selecting an option by 
-   changing the appropriate '#elif 0' to #elif 1'.   If you wish to 
-   use the win32 AMD assembler files, you also have to use the 
-   Visual Studio property page to define AMD_ASM (alternatively
-   you can edit the two files mulredc.asm and redc.asm in the 
-   build.vc11\assembler\ directory to include the AMD assembler).
-
-The GPU Build
--------------
-
-1. If you wish to build with a GPU capability you will need to 
-   install Nvidia Nsight for Visual Studio and the CUDA Toolkit
-   v5.5.  You then build the libecm_gpu and ecm_gpu projects
-   
-2. The choices above for the non GPU build aslo apply when
-   building for a GPU based system. 
-   
-   By default, the GPU  configuration is "compute_30,sm_30". If
-   you need to change this, select libecm_gpu and ecm_gpu and 
-   set the propertiesfor "CUDA C/C++|Device|Code Generation" for
-   your GPU capability. 
-   
-   Also under "C/C++|Preprocessor|Preprocessor Definitions" for 
-   both these projects, change the current definition GPU_CC30 to 
-   that for your GPU capability (GPU_CC20, GPU_CC21, GPU_CC30 or 
-   GPU_CC35).
-
-Build Configurations
---------------------
-
-When a version of ecm and ecmlib are built the library and the application
-are put in the directory matching the configuration that has been built:
-
-    GMP-ECM
-      build.vc11    -- ECM build files 
-      lib           -- ECM static library files
-      dll           -- ECM dynamic library files
-      bin           -- ECM executable files
-      
-within these lib, dll and bin directories, the outputs are located in
-sub-directories determined by the platform and configuration:
- 
-   win32\release
-   win32\debug
-   x64\release
-   x64\debug
-
-If you don't want assembler support you need to change the define:      
-
-#define NATIVE_REDC   1         
-
-in config.h (in the build.vc11 subdirectory) to: 
-
-#undef NATIVE_REDC
-
-Tune
-====
-
-If tune is compiled and run for a particular configuration it will output
-suitable values for optimising GMP-ECM to the console window.  To optimise
-GMP-ECM these values should be put in a suitably named file whcih then has
-to be integrated in ecm-params.h.
-
-Tests
-=====
-
-The file test.py is a python script that runs the ECM tests. It runs the
-x64/release-amd (non GPU) version by default but can be edited to test other
-builds.
-
-    Brian Gladman, August 2013
diff --git a/build.vc12/tests.py b/build.vc12/tests.py
deleted file mode 100644
index 802e6e00..00000000
--- a/build.vc12/tests.py
+++ /dev/null
@@ -1,150 +0,0 @@
-
-from __future__ import print_function
-import os
-import sys
-import string
-import platform
-from re import match
-from subprocess import Popen, PIPE, STDOUT
-from tempfile import *
-
-try:
-  from time import perf_counter as timer
-except ImportError:
-  from time import clock as timer
-
-
-x64 = True
-debug = False
-test_gpu_version = True
-run_non_gpu_tests = True
-run_gpu_tests = True
-
-class Timer() :
-  def __enter__(self): self.start = timer()
-  def __exit__(self, *args): print(' time {:.3f} milliseconds'.format(1000 * (timer() - self.start)))
-
-cpath = os.path.dirname(__file__)
-config = 'x64' if x64 else 'Win32'
-mode = 'Debug' if debug else 'Release'
-test_dir = '..\\bin\\{:s}\\{:s}\\'.format(config, mode)
-
-def get_tests(filename):
-  print('running tests in {:s}'.format(filename))
-  start, sub, tests, c_tests = True, dict(), [], []
-  with open(os.path.join(cpath, filename)) as f:
-    lines = f.readlines()
-    cnt, lnth = 0, len(lines)
-    while cnt < lnth:
-      try:
-        line = lines[cnt].strip()
-        cnt += 1
-        tkns = line.split()
-        if line.startswith('echo') and len(tkns) > 2 and tkns[2] == '|':
-          while cnt < lnth and 'checkcode' not in line:
-            while cnt < lnth and not lines[cnt]:
-              cnt += 1
-            if cnt < lnth:
-              line += '|' + lines[cnt]
-              cnt += 1
-          start = False
-        elif start:
-          sp = line.split('="')
-          if len(sp) == 2:
-            if sp[1].startswith('${1:-./ecm}'):
-              sub[sp[0]] = sp[1][12:-1]
-            else:
-              sub[sp[0]] = sp[1][:-1]
-          continue
-        else:
-          continue
-        line = line.replace(';', '|')
-        sub_tests = []
-        for line_part in line.split('|'):
-          tkns = line_part.strip().split()
-          cmd =  []
-          for tok in tkns:
-            if tok.startswith('"') and tok.endswith('"'):
-              tok = tok[1:-1]
-            if tok[0] == '$' and tok[1:] in sub:
-              tok = tok.replace(tok, sub[tok[1:]])
-            elif tok == './ecm':
-              tok = ''
-            cmd += [tok]
-          cseq = []
-          if cmd and cmd[0] == 'echo':
-            cseq += [cmd[1]]
-            cmd = cmd[2:]
-          if len(cmd) >= 3 and cmd[-3] == 'checkcode' and cmd[-2] == '$?':
-            cseq += [int(cmd[-1])]
-            cmd = cmd[:-3]
-          cmd = (' '.join(cmd)).strip()
-          if cmd:
-            cseq += [cmd]
-          sub_tests += [cseq]
-        if len(sub_tests) == 3 and all(len(x) == 1 for x in sub_tests):
-          tests += [tuple(x[0] for x in sub_tests)]
-        else:
-          c_tests += [sub_tests]
-      except ValueError:
-        print('parsing error on line {} in text "{}"'.format(cnt, line))
-  return tests, c_tests
-
-def run_exe(exe, args, inp) :
-  al = {'stdin' : PIPE, 'stdout' : PIPE, 'stderr' : STDOUT }
-  if sys.platform.startswith('win'):
-    al['creationflags'] = 0x08000000
-  p = Popen([os.path.join(cpath, exe)] + args.split(' '), **al)
-  res = p.communicate(inp.encode())[0].decode()
-  ret = p.poll()
-  return (ret, res)
-
-def output_complex_tests(x):
-  print('these tests are too complex:')
-  for t in x:
-    print(t)
-
-def do_tests(tests, ctests, out=False, gpu=False):
-  ecm_exe  = test_dir + ("ecm_gpu.exe" if gpu else "ecm.exe")
-  err_cnt = 0
-  for ix, tt in enumerate(tests):
-    print(tt[1], tt[0], end='')
-    rv = run_exe(ecm_exe, tt[1], tt[0])
-    if type(tt[2]) == int and rv[0] != tt[2]:
-      print(" - *** ERROR in test {:d}: {:d} {:d} ***".format(ix, rv[0], tt[2]))
-      err_cnt += 1
-    elif type(tt[2]) == tuple and rv[0] != tt[2][0] and rv[0] != tt[2][1]:
-      print(" - *** ERROR in test {:d}: {:d} {:s} ***".format(ix, rv[0], tt[2]))
-      err_cnt += 1
-    else:
-      print(" - passed")
-    if out:
-      op = rv[1].rsplit('\r\n')
-      for i in op :
-        print(i)
-
-  if ctests:
-    output_complex_tests(ctests)
-  if not err_cnt:
-    if ctests:
-      print('all other tests passed')
-    else:
-      print('all tests passed')
-
-with Timer():
-  if os.path.exists('test.pm1.save'):
-    os.remove('test.pm1.save')
-  if run_non_gpu_tests:
-    t, ct = get_tests("..\\test.ecm")
-    do_tests(t, ct)
-    t, ct = get_tests("..\\test.pm1")
-    do_tests(t, ct)
-    t, ct = get_tests("..\\test.pp1")
-    do_tests(t, ct)
-    t, ct = get_tests("..\\testlong.pp1")
-    do_tests(t, ct)
-    t, ct = get_tests("..\\testlong.pm1")
-    do_tests(t, ct)
-  if run_gpu_tests:
-    t, ct = get_tests("..\\test.gpuecm")
-    do_tests(t, ct, gpu=True)
diff --git a/build.vc12/tune/Makefile.am b/build.vc12/tune/Makefile.am
deleted file mode 100644
index fe8ca5e2..00000000
--- a/build.vc12/tune/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = tune.vcxproj tune.vcxproj.filters
diff --git a/build.vc12/tune/tune.vcxproj b/build.vc12/tune/tune.vcxproj
deleted file mode 100644
index f5bfda10..00000000
--- a/build.vc12/tune/tune.vcxproj
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{80E08750-5C6C-492E-BB1E-7200978AE125}</ProjectGuid>
-    <RootNamespace>tune</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="..\vsyasm.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);..\..\;..\assembler;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;TUNE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);%(AdditionalDependencies)</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>
-      </Command>
-    </PostBuildEvent>
-    <YASM>
-      <Defines>
-      </Defines>
-    </YASM>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);..\..\;..\assembler;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;NDEBUG;_CONSOLE;TUNE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);%(AdditionalDependencies)</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>
-      </Command>
-    </PostBuildEvent>
-    <YASM>
-      <Defines>_WIN64</Defines>
-    </YASM>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm" />
-    <YASM Include="..\assembler\redc.asm" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxarith.c" />
-    <ClCompile Include="..\..\auxlib.c" />
-    <ClCompile Include="..\..\ecm_ntt.c" />
-    <ClCompile Include="..\..\ks-multiply.c" />
-    <ClCompile Include="..\..\listz.c" />
-    <ClCompile Include="..\..\median.c" />
-    <ClCompile Include="..\..\mpmod.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TUNE_MULREDC_THRESH#0;TUNE_SQRREDC_THRESH#0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TUNE_MULREDC_THRESH#0;TUNE_SQRREDC_THRESH#0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspm.c" />
-    <ClCompile Include="..\..\mpzspv.c" />
-    <ClCompile Include="..\..\mul_lo.c" />
-    <ClCompile Include="..\..\ntt_gfp.c" />
-    <ClCompile Include="..\..\polyeval.c" />
-    <ClCompile Include="..\..\random.c" />
-    <ClCompile Include="..\..\schoen_strass.c" />
-    <ClCompile Include="..\..\sp.c" />
-    <ClCompile Include="..\..\spm.c" />
-    <ClCompile Include="..\..\spv.c" />
-    <ClCompile Include="..\..\tune.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-    <ClInclude Include="..\..\ecm-params.h" />
-    <ClInclude Include="..\config.h" />
-    <ClInclude Include="..\..\ecm-ecm.h" />
-    <ClInclude Include="..\..\ecm-gmp.h" />
-    <ClInclude Include="..\..\ecm-impl.h" />
-    <ClInclude Include="..\..\ecm.h" />
-    <ClInclude Include="..\..\longlong.h" />
-    <ClInclude Include="..\..\sp.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libecm\libecm.vcxproj">
-      <Project>{cd555681-d65b-4173-a29c-b8bf06a4871b}</Project>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="..\vsyasm.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc12/tune/tune.vcxproj.filters b/build.vc12/tune/tune.vcxproj.filters
deleted file mode 100644
index dff0286b..00000000
--- a/build.vc12/tune/tune.vcxproj.filters
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Source Files\Assembler">
-      <UniqueIdentifier>{38f1a18f-40fc-4eed-a68e-e79b58327b6c}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm">
-      <Filter>Source Files\Assembler</Filter>
-    </YASM>
-    <YASM Include="..\assembler\redc.asm">
-      <Filter>Source Files\Assembler</Filter>
-    </YASM>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxarith.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\auxlib.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm_ntt.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ks-multiply.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\listz.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\median.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpmod.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mul_lo.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ntt_gfp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\polyeval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\random.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\schoen_strass.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\sp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tune.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\sp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc12/vacopy.c b/build.vc12/vacopy.c
deleted file mode 100644
index d6a3d81a..00000000
--- a/build.vc12/vacopy.c
+++ /dev/null
@@ -1,8 +0,0 @@
-
-#include <stdarg.h>
-#include <string.h>
-
-void _vacopy(va_list *pap, va_list ap)
-{
-    *pap = ap;
-}
diff --git a/build.vc12/vsyasm.props b/build.vc12/vsyasm.props
deleted file mode 100644
index 54aedd7b..00000000
--- a/build.vc12/vsyasm.props
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup
-    Condition="'$(YASMBeforeTargets)' == '' and '$(YASMAfterTargets)' == '' and '$(ConfigurationType)' != 'Makefile'">
-    <YASMBeforeTargets>Midl</YASMBeforeTargets>
-    <YASMAfterTargets>CustomBuild</YASMAfterTargets>
-  </PropertyGroup>
-  <PropertyGroup>
-    <YASMDependsOn
-      Condition="'$(ConfigurationType)' != 'Makefile'">_SelectedFiles;$(YASMDependsOn)</YASMDependsOn>
-  </PropertyGroup>
-  <PropertyGroup>
-    <YasmPath Condition= "'$(YASMPATH)' == ''">C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\</YasmPath>
-  </PropertyGroup>
-  <ItemDefinitionGroup>
-    <YASM>
-      <Debug>False</Debug>
-      <ObjectFile>$(IntDir)</ObjectFile>
-      <PreProc>0</PreProc>
-      <Parser>0</Parser>
-      <CommandLineTemplate>"$(YasmPath)"vsyasm.exe -Xvc -f $(Platform) [AllOptions] [AdditionalOptions] [Inputs]</CommandLineTemplate>
-      <Outputs>%(ObjectFile)</Outputs>
-      <ExecutionDescription>Assembling %(Filename)%(Extension)</ExecutionDescription>
-      <ShowOnlyRuleProperties>false</ShowOnlyRuleProperties>
-    </YASM>
-  </ItemDefinitionGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc12/vsyasm.targets b/build.vc12/vsyasm.targets
deleted file mode 100644
index c86180dd..00000000
--- a/build.vc12/vsyasm.targets
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <PropertyPageSchema
-      Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
-    <AvailableItemName
-      Include="YASM">
-      <Targets>_YASM</Targets>
-    </AvailableItemName>
-  </ItemGroup>
-  <UsingTask
-    TaskName="YASM"
-    TaskFactory="XamlTaskFactory"
-    AssemblyName="Microsoft.Build.Tasks.v4.0">
-    <Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task>
-  </UsingTask>
-  <Target
-    Name="_YASM"
-    BeforeTargets="$(YASMBeforeTargets)"
-    AfterTargets="$(YASMAfterTargets)"
-    Condition="'@(YASM)' != ''"
-    DependsOnTargets="$(YASMDependsOn);ComputeYASMOutput"
-    Outputs="@(YASM->'%(ObjectFile)')"
-    Inputs="@(YASM);%(YASM.AdditionalDependencies);$(MSBuildProjectFile)">
-    <ItemGroup
-      Condition="'@(SelectedFiles)' != ''">
-      <YASM
-        Remove="@(YASM)"
-        Condition="'%(Identity)' != '@(SelectedFiles)'" />
-    </ItemGroup>
-    <ItemGroup>
-      <YASM_tlog
-        Include="%(YASM.ObjectFile)"
-        Condition="'%(YASM.ObjectFile)' != '' and '%(YASM.ExcludedFromBuild)' != 'true'">
-        <Source>@(YASM, '|')</Source>
-      </YASM_tlog>
-    </ItemGroup>
-    <Message
-      Importance="High"
-      Text="%(YASM.ExecutionDescription)" />
-    <WriteLinesToFile
-      Condition="'@(YASM_tlog)' != '' and '%(YASM_tlog.ExcludedFromBuild)' != 'true'"
-      File="$(IntDir)$(ProjectName).write.1.tlog"
-      Lines="^%(YASM_tlog.Source);@(YASM_tlog->'%(Fullpath)')" />
-    <YASM
-      Condition="'@(YASM)' != '' and '%(YASM.ExcludedFromBuild)' != 'true'"
-      CommandLineTemplate="%(YASM.CommandLineTemplate)"
-      Debug="%(YASM.Debug)"
-      PreIncludeFile="%(YASM.PreIncludeFile)"
-      IncludePaths="%(YASM.IncludePaths)"
-      Defines="%(YASM.Defines)"
-      UnDefines="%(YASM.UnDefines)"
-      ObjectFile="%(YASM.ObjectFile)"
-      ListFile="%(YASM.ListFile)"
-      MapFile="%(YASM.MapFile)"
-      ErrorFile="%(YASM.ErrorFile)"
-      SymbolPrefix="%(YASM.SymbolPrefix)"
-      SymbolSuffix="%(YASM.SymbolSuffix)"
-      PreProc="%(YASM.PreProc)"
-      Parser="%(YASM.Parser)"
-      AdditionalOptions="%(YASM.AdditionalOptions)"
-      Inputs="@(YASM)" />
-  </Target>
-  <PropertyGroup>
-    <ComputeLinkInputsTargets>
-            $(ComputeLinkInputsTargets);
-            ComputeYASMOutput;
-          </ComputeLinkInputsTargets>
-    <ComputeLibInputsTargets>
-            $(ComputeLibInputsTargets);
-            ComputeYASMOutput;
-          </ComputeLibInputsTargets>
-  </PropertyGroup>
-  <Target
-    Name="ComputeYASMOutput"
-    Condition="'@(YASM)' != ''">
-    <ItemGroup>
-      <YASMDirsToMake
-        Condition="'@(YASM)' != '' and '%(YASM.ExcludedFromBuild)' != 'true' and !HasTrailingSlash('%(YASM.ObjectFile)')"
-        Include="%(YASM.ObjectFile)" />
-      <Link
-        Include="%(YASMDirsToMake.Identity)"
-        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
-      <Lib
-        Include="%(YASMDirsToMake.Identity)"
-        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
-      <ImpLib
-        Include="%(YASMDirsToMake.Identity)"
-        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
-    </ItemGroup>
-    <ItemGroup>
-      <YASMDirsToMake
-        Condition="'@(YASM)' != '' and '%(YASM.ExcludedFromBuild)' != 'true' and HasTrailingSlash('%(YASM.ObjectFile)')"
-        Include="@(YASM->'%(ObjectFile)%(Filename).obj')" />
-      <Link
-        Include="%(YASMDirsToMake.Identity)"
-        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
-      <Lib
-        Include="%(YASMDirsToMake.Identity)"
-        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
-      <ImpLib
-        Include="%(YASMDirsToMake.Identity)"
-        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
-    </ItemGroup>
-    <MakeDir
-      Directories="@(YASMDirsToMake->'%(RootDir)%(Directory)')" />
-  </Target>
-</Project>
\ No newline at end of file
diff --git a/build.vc12/vsyasm.xml b/build.vc12/vsyasm.xml
deleted file mode 100644
index 860bce8d..00000000
--- a/build.vc12/vsyasm.xml
+++ /dev/null
@@ -1,283 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<ProjectSchemaDefinitions xmlns="clr-namespace:Microsoft.Build.Framework.XamlTypes;assembly=Microsoft.Build.Framework" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:transformCallback="Microsoft.Cpp.Dev10.ConvertPropertyCallback">
-  <Rule
-    Name="YASM"
-    PageTemplate="tool"
-    DisplayName="Yasm Assembler"
-    Order="200">
-      
-    <Rule.DataSource>
-      <DataSource
-        Persistence="ProjectFile"
-        ItemType="YASM" />
-    </Rule.DataSource>
-      
-    <Rule.Categories>
-        
-      <Category
-        Name="General">
-        <Category.DisplayName>
-          <sys:String>General</sys:String>
-        </Category.DisplayName>
-      </Category>
-
-      <Category
-        Name="Symbols">
-          <Category.DisplayName>
-              <sys:String>Symbols</sys:String>
-          </Category.DisplayName>
-      </Category>
-
-      <Category
-        Name="Files">
-          <Category.DisplayName>
-              <sys:String>Files</sys:String>
-          </Category.DisplayName>
-      </Category>
-        
-      <Category
-        Name="Command Line"
-        Subtype="CommandLine">
-        <Category.DisplayName>
-          <sys:String>Command Line</sys:String>
-        </Category.DisplayName>
-      </Category>
-        
-    </Rule.Categories>
-
-    <StringListProperty
-      Name="Inputs"
-      Category="Command Line"
-      IsRequired="true"
-      Switch=" ">
-      <StringListProperty.DataSource>
-        <DataSource
-          Persistence="ProjectFile"
-          ItemType="YASM"
-          SourceType="Item" />
-      </StringListProperty.DataSource>
-    </StringListProperty>
-    
-    <BoolProperty
-      Name="Debug"
-      Subcategory="Configuration"
-      HelpContext="0"
-      DisplayName="Debug Information"
-      Description="Generate debugging information"
-      Switch="-g cv8" />
-
-    <StringListProperty
-      Name="IncludePaths"
-      Subcategory="Configuration"
-      HelpContext="0"
-      DisplayName="Include Paths"
-      Description="Set the paths for any additional include files"
-      Switch="-i &quot;[value]&quot;" />
-
-    <StringListProperty
-      Name="Defines"
-      Category="Symbols"
-      Subcategory="Pre-Defined Symbols"
-      HelpContext="0"
-      DisplayName="Defined Symbols"
-      Description="Specify pre-defined symbols ('symbol' or 'symbol = value') "
-      Switch="-d &quot;[value]&quot;" />
-    
-    <StringListProperty
-      Name="UnDefines"
-      Category="Symbols"
-      Subcategory="Pre-Defined Symbols"
-      HelpContext="0"
-      DisplayName="Remove Symbols"
-      Description="Remove pre-defined symbols "
-      Switch="-u &quot;[value]&quot;" />
-    
-    <StringProperty
-      Name="ObjectFile"
-      Subcategory="Output"
-      HelpContext="0"
-      DisplayName="Object File Name"
-      Description="Select the output file name"
-      Switch="-o &quot;[value]&quot;" />
-    
-    <StringProperty
-      Name="ListFile"
-      Category="Files"
-      Subcategory="Output"
-      HelpContext="0"
-      DisplayName="List File Name"
-      Description="Select an output listing by setting its file name"
-      Switch="-l &quot;[value]&quot;" />
-    
-    <StringProperty
-      Name="PreIncludeFile"
-      Category="Files"
-      Subcategory="Configuration"
-      HelpContext="0"
-      DisplayName="Pre Include File"
-      Description="Select a pre-included file by setting its name"
-      Switch="-P &quot;[value]&quot;" />
-      
-    <StringProperty
-      Name="MapFile"
-      Category="Files"
-      Subcategory="Output"
-      HelpContext="0"
-      DisplayName="Map File Name"
-      Description="Select a map output by setting its file name"
-      Switch="--mapdir= &quot;[value]&quot;" />
-
-    <StringProperty
-      Name="ErrorFile"
-      Category="Files"
-      Subcategory="Output"
-      HelpContext="0"
-      DisplayName="Error File Name"
-      Description="Send error/warning messages to a file by setting its name"
-      Switch="-E &quot;[value]&quot;" />
-
-    <StringProperty
-      Name="SymbolPrefix"
-      Category="Symbols"
-      Subcategory="Symbols"
-      HelpContext="0"
-      DisplayName="External Symbol Prefix"
-      Description="Prepend symbol to all external symbols"
-      Switch="--prefix &quot;[value]&quot;" />
-
-    <StringProperty
-      Name="SymbolSuffix"
-      Category="Symbols"
-      Subcategory="Symbols"
-      HelpContext="0"
-      DisplayName="External Symbol Suffix"
-      Description="Append symbol to all external symbols"
-      Switch="--suffix &quot;[value]&quot;" />
-
-    <EnumProperty
-      Name="PreProc"
-      Subcategory="Configuration"
-      HelpContext="0"
-      DisplayName="Pre-Processor"
-      Description="Select the pre-processor ('nasm' or 'raw')">
-      <EnumValue
-        Name="0"
-        DisplayName="Nasm "
-        Switch="-rnasm" />
-      <EnumValue
-        Name="1"
-        DisplayName="Raw"
-        Switch="-rraw" />
-    </EnumProperty>
-    
-    <EnumProperty
-      Name="Parser"
-      Subcategory="Configuration"
-      HelpContext="0"
-      DisplayName="Parser"
-      Description="Select the parser for Intel ('nasm') or AT&amp;T ( 'gas') syntax">
-      <EnumValue
-        Name="0"
-        DisplayName="Nasm"
-        Switch="-pnasm" />
-      <EnumValue
-        Name="1"
-        DisplayName="Gas"
-        Switch="-pgas" />
-    </EnumProperty>
-    
-    <StringProperty
-      Name="CommandLineTemplate"
-      DisplayName="Command Line"
-      Visible="False"
-      IncludeInCommandLine="False" />
-    
-    <DynamicEnumProperty
-      Name="YASMBeforeTargets"
-      Category="General"
-      EnumProvider="Targets"
-      IncludeInCommandLine="False">
-      <DynamicEnumProperty.DisplayName>
-        <sys:String>Execute Before</sys:String>
-      </DynamicEnumProperty.DisplayName>
-      <DynamicEnumProperty.Description>
-        <sys:String>Specifies the targets for the build customization to run before.</sys:String>
-      </DynamicEnumProperty.Description>
-      <DynamicEnumProperty.ProviderSettings>
-        <NameValuePair
-          Name="Exclude"
-          Value="^YASMBeforeTargets|^Compute" />
-      </DynamicEnumProperty.ProviderSettings>
-      <DynamicEnumProperty.DataSource>
-        <DataSource
-          Persistence="ProjectFile"
-          HasConfigurationCondition="true" />
-      </DynamicEnumProperty.DataSource>
-    </DynamicEnumProperty>
-    
-    <DynamicEnumProperty
-      Name="YASMAfterTargets"
-      Category="General"
-      EnumProvider="Targets"
-      IncludeInCommandLine="False">
-      <DynamicEnumProperty.DisplayName>
-        <sys:String>Execute After</sys:String>
-      </DynamicEnumProperty.DisplayName>
-      <DynamicEnumProperty.Description>
-        <sys:String>Specifies the targets for the build customization to run after.</sys:String>
-      </DynamicEnumProperty.Description>
-      <DynamicEnumProperty.ProviderSettings>
-        <NameValuePair
-          Name="Exclude"
-          Value="^YASMAfterTargets|^Compute" />
-      </DynamicEnumProperty.ProviderSettings>
-      <DynamicEnumProperty.DataSource>
-        <DataSource
-          Persistence="ProjectFile"
-          ItemType=""
-          HasConfigurationCondition="true" />
-      </DynamicEnumProperty.DataSource>
-    </DynamicEnumProperty>
-    
-    <StringListProperty
-      Name="Outputs"
-      DisplayName="Outputs"
-      Visible="False"
-      IncludeInCommandLine="False" />
-    
-    <StringProperty
-      Name="ExecutionDescription"
-      DisplayName="Execution Description"
-      Visible="False"
-      IncludeInCommandLine="False" />
-    
-    <StringListProperty
-      Name="AdditionalDependencies"
-      DisplayName="Additional Dependencies"
-      IncludeInCommandLine="False"
-      Visible="true" />
-    
-    <StringProperty
-      Subtype="AdditionalOptions"
-      Name="AdditionalOptions"
-      Category="Command Line">
-      <StringProperty.DisplayName>
-        <sys:String>Additional Options</sys:String>
-      </StringProperty.DisplayName>
-      <StringProperty.Description>
-        <sys:String>Additional Options</sys:String>
-      </StringProperty.Description>
-    </StringProperty>
-  </Rule>
-  
-  <ItemType
-    Name="YASM"
-    DisplayName="Yasm Assembler" />
-  <FileExtension
-    Name="*.asm"
-    ContentType="YASM" />
-  <ContentType
-    Name="YASM"
-    DisplayName="Yasm Assembler"
-    ItemType="YASM" />
-</ProjectSchemaDefinitions>
\ No newline at end of file
diff --git a/build.vc14/Makefile.am b/build.vc14/Makefile.am
deleted file mode 100644
index d199fdfd..00000000
--- a/build.vc14/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-EXTRA_DIST = config.h ecm.sln ecm_gpu.sln file_copy.bat gen_ecm_h.bat \
-             getopt.c getopt.h getrusage.c getrusage.h gettimeofday.c \
-	     gettimeofday.h mp_lib.props out_copy_rename.bat prebuild.bat \
-	     python.bat readme.txt tests.py vacopy.c vsyasm.props \
-	     vsyasm.targets vsyasm.xml
-
-DIST_SUBDIRS = assembler ecm ecm_gpu libecm libecm_gpu tune bench_mulredc
diff --git a/build.vc14/assembler/Makefile.am b/build.vc14/assembler/Makefile.am
deleted file mode 100644
index 3b2f7d84..00000000
--- a/build.vc14/assembler/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-EXTRA_DIST = a_win32a_mulredc.asm a_win32a_redc.asm a_win32p_mulredc.asm \
-             a_win32p_redc.asm a_x64_mulredc.asm a_x64_redc.asm \
-             test_mulredc.c mulredc.h mulredc.asm redc.asm
diff --git a/build.vc14/assembler/a_win32a_redc.asm b/build.vc14/assembler/a_win32a_redc.asm
deleted file mode 100644
index 9b473071..00000000
--- a/build.vc14/assembler/a_win32a_redc.asm
+++ /dev/null
@@ -1,133 +0,0 @@
-;
-; Part of GMP-ECM
-;
-; void ecm_redc3(
-;       mp_limb_t       *z,     rdi  r8  <- rcx
-;       const mp_limb_t *x,     rsi  r9  <- rdx
-;       size_t           n,     rdx r10  <-  r8
-;       mp_limb_t        m      rcx r11  <-  r9
-;   )
-
-%macro  seq 3
-    mov     eax, [byte esi+4*%3]
-    mul     ebp
-    add     [byte edi+4*%3], %2
-    adc     %1, eax
-    mov     %2, edx
-    adc     %2, 0
-%endmacro
-
-    text
-    global _ecm_redc3
-     
-_ecm_redc3:
-	push	ebp					
-	push	edi
-	push	esi
-	push	ebx
-	sub	    esp, 16
-	mov	    ecx, [esp+44]
-	mov	    edi, [esp+36]
-	mov	    [esp], ecx
-    cmp     ecx, 5
-    jae     .3		
-
-.1:	mov	    ebp, [esp+48]
-    mov     esi, [esp+40]
-	imul	ebp, [edi]				
-	mov	    [esp+36], edi
-	mov	    ecx, [esp+44]
-	xor	    ebx, ebx			
-
-.2: mov     eax, [esi]
-    add     edi, 4
-    mul     ebp			
-    add     esi, 4
-    add     eax, ebx
-    adc     edx, 0		
-    add     [edi-4], eax
-    adc     edx, 0		
-    dec     ecx			
-    mov     ebx, edx
-    jnz     .2		
-    mov	    edi, [esp+36]
-    mov     [edi], ebx
-    dec	    dword [esp]
-    lea	    edi, [edi+4]			
-    jnz     .1				
-
-	add	    esp, 16
-	pop	    ebx
-	pop	    esi
-	pop	    edi
-	pop 	ebp
-	ret
-	
-.3: mov     edx, ecx
-    dec     ecx
-    sub     edx, 2
-    neg     ecx	
-    shr     edx, 4
-    and     ecx, 15
-    mov     [esp+8], edx
-    mov     edx, ecx
-    shl     edx, 4
-    neg     ecx
-    lea    edx, [edx+ecx+.6]
-    mov	    [esp+44], ecx
-    mov	    [esp+12], edx
-
-.4:	mov     ebp, [esp+48]
-    mov     esi, [esp+40]
-    imul    ebp, [edi]                          
-    mov     [esp+36], edi                  
-    mov     ecx, [esp+44]
-    mov     edx, [esp+8]
-    mov	    [esp+4], edx
-    mov     eax, [esi]
-    lea     esi, [esi+ecx*4+4]
-    mul     ebp
-    lea     edi, [edi+ecx*4]
-    mov     ebx, edx
-    mov     edx, [esp+12]
-    test    ecx, 1
-    mov     ecx, eax
-    cmovnz  ecx, ebx
-    cmovnz  ebx, eax
-    jmp     edx
-
-    align   32
-.5:	add     edi, 64
-.6:	
-
-%assign i 0
-%rep 16
-    %if (i & 1)
-        seq     ecx, ebx,  i
-    %else
-        seq     ebx, ecx,  i
-    %endif
-    %assign i i + 1
-%endrep
-
-    dec     dword [esp+4]
-    lea     esi, [esi+64]
-    jns     .5
-
-    add     [edi+64], ecx
-    mov     edi, [esp+36]
-    adc     ebx, 0
-    mov     [edi], ebx
-    dec     dword [esp]
-    lea     edi, [edi+4]
-    jnz     .4                      
-
-    add     esp, 16
-    pop     ebx
-    pop     esi
-    pop     edi
-    pop     ebp
-    ret
-
-    end
-    
\ No newline at end of file
diff --git a/build.vc14/assembler/a_win32p_mulredc.asm b/build.vc14/assembler/a_win32p_mulredc.asm
deleted file mode 100644
index 001f7255..00000000
--- a/build.vc14/assembler/a_win32p_mulredc.asm
+++ /dev/null
@@ -1,148 +0,0 @@
-
-; Part of GMP-ECM
-;
-; mp_limb_t mulredc1(           1 limb
-;       mp_limb_t       *z,
-;       const mp_limb_t  x,
-;       const mp_limb_t  y,
-;       const mp_limb_t  m,
-;       mp_limb_t inv_m
-;   )
-;
-; mp_limb_t mulredc<limbs>(   > 1 limb
-;       mp_limb_t       *z,
-;       const mp_limb_t *x,
-;       const mp_limb_t *y,
-;       const mp_limb_t *m,
-;       mp_limb_t inv_m
-;   )
-
-%macro mseq 1
-	movd	mm1, [esi+4*%1]
-	movd	mm2, [edi+4*%1]
-	pmuludq	mm1, mm7
-	paddq	mm2, mm1
-	paddq	mm0, mm2
-	movd	[edi+4*%1], mm0
-	psrlq   mm0, 32
-%endmacro
-
-%macro  mulredc 1
-%assign limbs       %1
-%define f_name(x)   _mulredc %+ x
-
-	global	f_name(limbs)
-%ifdef	DLL
-	export	f_name(limbs)
-%endif
-
-f_name(limbs):
-	push    ebp
-	push    edi
-	push    esi
-	push    ebx
-	sub	    esp, 8*(limbs+1)
-	mov	    edi, esp
-
-%assign i 0
-%rep    2 * limbs + 1
-	mov	    dword [edi+4*i], 0
-	%assign i i + 1
-%endrep
-
-	mov	    dword [esp+8*limbs+4], limbs
-
-    align 32
-
-.1:	mov	    eax, [esp+8*limbs+32]
-	mov	    esi, [esp+8*limbs+36]
-	mov	    eax, [eax]
-	mul	    dword [esi]
-	add	    eax, [edi]
-	mul	    dword [esp+8*limbs+44]
-	mov     ebp, eax
-	mov	    esi, [esp+8*limbs+40]
-
-	pxor	mm0, mm0
-	movd	mm7, ebp
-
-%assign i 0
-%rep limbs
-    mseq i
-    %assign i i + 1
-%endrep
-
-	movd	ecx, mm0
-
-	add	    [edi+4*limbs], ecx
-	adc	    dword [edi+4*limbs+4], 0
-	mov	    eax, [esp+8*limbs+32]
-	mov	    ebp, [eax]
-	mov	    esi, [esp+8*limbs+36]
-
-	pxor	mm0, mm0
-	movd	mm7, ebp
-
-%assign i 0
-%rep limbs
-    mseq i
-    %assign i i + 1
-%endrep
-
-	movd	ecx, mm0
-    add     [edi+4*limbs], ecx
-    adc     dword [edi+4*limbs+4], 0
-	add	    dword [esp+8*limbs+32], 4
-	add	    edi, 4
-	dec	    dword [esp+8*limbs+4]
-	jnz	    .1
-
-	mov	    ebx, [esp+8*limbs+28]
-
-%assign i 0
-%rep limbs
-	mov	    eax, [edi+4*i]
-	mov	    [ebx+4*i], eax
-	%assign i i + 1
-%endrep
-	mov	    eax, [edi+4*limbs]
-	add     esp, 8*(limbs+1)
-
-	pop     ebx
-	pop     esi
-	pop     edi
-	pop     ebp
-	emms
-	ret
-%endmacro
-
-    bits    32
-	section .text
-
-	global	_mulredc1
-%ifdef	DLL
-	export	_mulredc1
-%endif
-
-_mulredc1:
-	mov	    eax, [esp+12]
-	mul	    dword [esp+8]
-	mov     [esp+12], edx
-	mov     [esp+8], eax
-	mul	    dword [esp+20]
-	mul	    dword [esp+16]
-	add	    eax, [esp+8]
-	adc	    edx, [esp+12]
-	mov	    ecx, [esp+4]
-	mov     [ecx], edx
-	adc	    eax, 0
-	ret
-
-%assign i 2
-%rep    19      ; 3..20 inclusive
-    mulredc i
-    %assign i i + 1
-%endrep
-
-    end
-
diff --git a/build.vc14/assembler/a_win32p_redc.asm b/build.vc14/assembler/a_win32p_redc.asm
deleted file mode 100644
index b94bd9f9..00000000
--- a/build.vc14/assembler/a_win32p_redc.asm
+++ /dev/null
@@ -1,145 +0,0 @@
-;
-; Part of GMP-ECM
-;
-; void ecm_redc3(
-;       mp_limb_t       *z,     rdi  r8  <- rcx
-;       const mp_limb_t *x,     rsi  r9  <- rdx
-;       size_t           n,     rdx r10  <-  r8
-;       mp_limb_t        m      rcx r11  <-  r9
-;   )
-
-%macro rloop 3
-    mov    eax, [byte esi+4*%3]
-    mul    ebp
-    add    [byte edi+4*%3], %2
-    adc    %1, eax
-    mov    %2, edx
-    adc    %2, 0
-%endmacro
-
-    bits    32
-	section .text
-
-	global	_ecm_redc3
-%ifdef	DLL
-	export	_ecm_redc3
-%endif
-
-_ecm_redc3:
-	push	ebp
-	push	edi
-	push	esi
-	push	ebx
-	sub	    esp, 16
-
-	mov	    ecx, [esp+44]
-	mov	    edi, [esp+36]
-	mov	    [esp], ecx
-    cmp     ecx, 5
-    jae     .unroll
-
-.1: mov	    ebp, [esp+48]
-    mov     esi, [esp+40]
-	imul    ebp, [edi]
-	mov	    [esp+36], edi
-	mov	    ecx, [esp+44]
-	xor	    ebx, ebx
-
-.2: mov     eax, [esi]
-	add     edi, 4
-	mul     ebp
-	add     esi, 4
-	add     eax, ebx
-    adc     edx, 0
-	add     [edi-4], eax
-	adc     edx, 0
-	dec     ecx
-	mov     ebx, edx
-	jnz     .2
-	mov	    edi, [esp+36]
-	mov     [edi], ebx
-	dec	    dword [esp]
-	lea	    edi, [edi+4]
-	jnz     .1
-
-	add	    esp, 16
-	pop	    ebx
-	pop	    esi
-	pop	    edi
-	pop	    ebp
-	ret
-
-.unroll:
-	mov     edx, ecx
-    dec     ecx
-	sub     edx, 2
-	neg     ecx
-	shr     edx, 4
-	and     ecx, 15
-	mov     [esp+8], edx
-	mov     edx, ecx
-	shl     edx, 4
-	neg     ecx
-    lea     edx, [edx+ecx*1+.loop_base]
-	mov	    [esp+44], ecx
-	mov	    [esp+12], edx
-
-.4:	mov     ebp, [esp+48]
-    mov     esi, [esp+40]
-    imul    ebp, [edi]
-    mov     [esp+36], edi
-    mov     ecx, [esp+44]
-	mov     edx, [esp+8]
-	mov	    [esp+4], edx
-    mov     eax, [esi]
-    lea     esi, [esi+ecx*4+4]
-    mul     ebp
-	lea     edi, [edi+ecx*4]
-    mov     ebx, edx
-    mov     edx, [esp+12]
-    test    ecx, 1
-    mov     ecx, eax
-	cmovnz  ecx, ebx
-    cmovnz  ebx, eax
-    jmp     edx
-
-    align  32
-.5:	add    edi, 64
-.loop_base:
-    rloop ebx, ecx,  0
-    rloop ecx, ebx,  1
-    rloop ebx, ecx,  2
-    rloop ecx, ebx,  3
-    rloop ebx, ecx,  4
-    rloop ecx, ebx,  5
-    rloop ebx, ecx,  6
-    rloop ecx, ebx,  7
-    rloop ebx, ecx,  8
-    rloop ecx, ebx,  9
-    rloop ebx, ecx, 10
-    rloop ecx, ebx, 11
-    rloop ebx, ecx, 12
-    rloop ecx, ebx, 13
-    rloop ebx, ecx, 14
-    rloop ecx, ebx, 15
-
-    dec     dword [esp+4]
-    lea     esi, [esi+64]
-    jns     .5
-
-    add     [edi+64], ecx
-    mov     edi, [esp+36]
-    adc     ebx, 0
-    mov     [edi], ebx
-    dec     dword [esp]
-    lea     edi, [edi+4]
-    jnz     .4
-
-    add     esp, 16
-    pop     ebx
-    pop     esi
-    pop     edi
-    pop     ebp
-    ret
-
-    end
diff --git a/build.vc14/assembler/a_x64_mulredc.asm b/build.vc14/assembler/a_x64_mulredc.asm
deleted file mode 100644
index 4f09d33c..00000000
--- a/build.vc14/assembler/a_x64_mulredc.asm
+++ /dev/null
@@ -1,237 +0,0 @@
-;
-; Part of GMP-ECM
-;
-; mp_limb_t mulredc1(             MSVC    1 limb
-;       mp_limb_t       *z,        rcx
-;       const mp_limb_t  x,        rdx
-;       const mp_limb_t  y,         r8
-;       const mp_limb_t  m,         r9
-;       mp_limb_t inv_m     [rsp+0x28]
-;   )
-;
-; mp_limb_t mulredc<limbs>(       MSVC  > 1 limb
-;       mp_limb_t       *z,        rcx
-;       const mp_limb_t *x,        rdx
-;       const mp_limb_t *y,         r8
-;       const mp_limb_t *m,         r9
-;       mp_limb_t inv_m     [rsp+0x28]
-;   )
-
-%macro  mseq_1 4
-	mov	    %2, rcx
-	mul	    r14
-	add	    %1, rax
-	mov	    rax, [r9+8*%3]
-	adc	    %2, rdx
-	mul	    r11
-%if %3 < %4 - 1
-	    add	    rax, %1
-	    mov     [rbp+8*(%3-1)], rax
-	    mov	    rax, [r8+8*(%3+1)]
-	    adc	    %2, rdx
-	    setc	cl
-%else
-        add     %1, rax
-	    mov	    [rbp+8*(%3-1)], %1
-	    adc     %2, rdx
-	    mov     [rbp+8*%3], %2
-	    setc	cl
-	    mov	    [rbp+8*(%3+1)], rcx
-%endif
-%endmacro
-
-%macro mseq_20 2
-	mov	    r14, [r13+r12*8]
-	mov	    rax, [r8]
-    mov	    %1, [rbp]
-	mov	    %2, [rbp+8]
-	mul	    r14
-	add	    r12, 1
-	add	    rax, %1
-	adc	    %2, rdx
-	setc	cl
-	mov 	%1, rax
-	imul	rax, r10
-	mov	    r11, rax
-	mul	    qword [r9]
-	add	    %1, rax
-	adc	    %2, rdx
-	mov	    rax, [r8+8]
-%endmacro
-
-%macro mseq_2 4
-	mov     %2, [rbp+8*(%3+1)]
-	adc	    %2, rcx
-%if %3 < %4 - 1
-	setc	cl
-%endif
-	mul	    r14
-	add	    %1, rax
-	mov	    rax, [r9+8*%3]
-	adc	    %2, rdx
-%if %3 < %4 - 1
-	adc	    cl, 0
-%else
-	setc	cl
-%endif
-	mul	    r11
-%if %3 < %4 - 1
-	    add	    rax, %1
-	    mov	    [rbp+8*(%3-1)], rax
-	    adc	    %2, rdx
-	    mov	    rax, [r8+8*(%3+1)]
-%else
-        add     %1, rax
-        mov     [rbp+8*(%3-1)], %1
-        adc     %2, rdx
-	    mov	    [rbp+8*%3],%2
-	    adc	    cl, 0
-	    mov	    [rbp+8*(%3+1)], rcx
-%endif
-%endmacro
-
-%macro store 1
-%assign i 0
-%rep %1
-    %if i == %1 - 1 && (%1 & 1)
-	    mov	    rax, [rbp+8*i]
-	    mov 	[rdi+8*i], rax
-    %elif (i & 1)
-	    mov 	[rdi+8*(i-1)], rax
-	    mov 	[rdi+8*i], rdx
-    %else
-	    mov	    rax, [rbp+8*i]
-    	mov	    rdx, [rbp+8*(i+1)]
-    %endif
-    %assign i i + 1
-%endrep
-%endmacro
-
-%macro mulredc 1
-
-%assign limbs       %1
-%define f_name(x)   mulredc %+ x
-%define stack_space 8 * (limbs + 1 + (limbs & 1))
-
-	global	f_name(limbs)
-%ifdef DLL
-	export	f_name(limbs)
-%endif
-
-    align   64
-
-PROC_FRAME	f_name(limbs)               ; SEH Frame
-    push_reg    rbp
-    push_reg    rbx
-    push_reg    rsi
-    push_reg    rdi
-    push_reg    r12
-    push_reg    r13
-    push_reg    r14
-    alloc_stack stack_space
-END_PROLOGUE
-                                        ;   *y in  r8
-	mov     rdi, rcx                    ;   *z -> rdi
-	mov	    r13, rdx                    ;   *x -> r13
-    mov     r10, [rsp+8*12+stack_space] ; invm -> r10
-                                        ;   *m in  r9
-	mov     r14, [r13]
-	mov	    rax, [r8]
-	xor     rcx, rcx
-	lea	    rbp, [rsp]
-	mov     r12, rcx
-	mul     qword r14
-	add	    r12, 1
-	mov 	rsi, rax
-	mov	    rbx, rdx
-	imul	rax, r10
-	mov	    r11, rax
-	mul	    qword [r9]
-	add	    rsi, rax
-	mov	    rax, [r8+8]
-	adc	    rbx, rdx
-	setc	cl
-
-%assign j 1
-%rep    limbs - 1
-%if (j & 1)
-    mseq_1  rbx, rsi, j, limbs
-%else
-    mseq_1  rsi, rbx, j, limbs
-%endif
-   %assign j j + 1
-%endrep
-
-    align 32
-.1:
-
-%assign j 1
-%if (limbs & 1)
-    mseq_20 rsi, rbx
-    %rep    limbs - 1
-        %if (j & 1)
-            mseq_2  rbx, rsi, j, limbs
-        %else
-            mseq_2  rsi, rbx, j, limbs
-        %endif
-        %assign j j + 1
-    %endrep
-%else
-    mseq_20 rbx, rsi
-    %rep    limbs - 1
-        %if (j & 1)
-            mseq_2  rsi, rbx, j, limbs
-        %else
-            mseq_2  rbx, rsi, j, limbs
-        %endif
-        %assign j j + 1
-    %endrep
-%endif
-
-	cmp     r12, limbs
-	jb	    .1
-
-    store   limbs
-
-	mov	    rax, rcx
-	add     rsp, stack_space
-	pop     r14
-	pop     r13
-	pop     r12
-	pop     rdi
-	pop     rsi
-	pop     rbx
-	pop     rbp
-	ret
-ENDPROC_FRAME
-%endmacro
-
-	bits    64
-	section .text
-
-	global	mulredc1
-%ifdef DLL
-	export	mulredc1
-%endif
-
-    align   64
-mulredc1:
-	mov	    rax, r8
-	mul	    rdx
-	mov	    r10, rax
-	mov	    r11, rdx
-	mul	    qword [rsp+0x28]
-	mul	    r9
-	add	    rax, r10
-	adc	    rdx, r11
-	mov	    [rcx], rdx
-	adc	    rax, 0
-	ret
-
-%assign i 2
-%rep    19      ; 2..20 inclusive
-    mulredc i
-    %assign i i + 1
-%endrep
-
-    end
diff --git a/build.vc14/assembler/a_x64_redc.asm b/build.vc14/assembler/a_x64_redc.asm
deleted file mode 100644
index 49a02452..00000000
--- a/build.vc14/assembler/a_x64_redc.asm
+++ /dev/null
@@ -1,161 +0,0 @@
-;
-; Part of GMP-ECM
-;
-; void ecm_redc3(
-;       mp_limb_t       *z,     rdi  r8  <- rcx
-;       const mp_limb_t *x,     rsi  r9  <- rdx
-;       size_t           n,     rdx r10  <-  r8
-;       mp_limb_t        m      rcx r11  <-  r9
-;   )
-
-%macro rloop 3
-    mov     rax,[byte rsi+8*%3]
-    mul     rbp
-    add     [byte rdi+8*%3], %1
-    adc     %2, rax
-    mov     %1, rdx
-    adc     %1, 0
-%endmacro
-
-	bits 64
-	section .text
-
-	global	ecm_redc3
-%ifdef DLL
-	export	ecm_redc3
-%endif
-
-PROC_FRAME	ecm_redc3
-    push_reg    rbp
-    push_reg    rbx
-    push_reg    rsi
-    push_reg    rdi
-	alloc_stack	5*8
-END_PROLOGUE
-	mov     rdi, rcx
-	mov     rsi, rdx
-	mov     rdx, r8
-	mov     rcx, r9
-
-	mov     r8, rdi
-	mov     r9, rsi
-	mov     r10, rdx
-	mov     r11, rcx
-
-	mov	    rcx, r10
-	mov	    [rsp], rcx
-    cmp     rcx, 3
-    jae     .unroll
-
-.1: mov	    rbp, r11
-	mov     rsi, r9
-	imul    rbp, [rdi]
-	mov	    r8, rdi
-	mov	    rcx, r10
-	xor	    rbx, rbx
-
-.2: mov     rax, [rsi]
-	add     rdi, 8
-	mul     rbp
-	add     rsi, 8
-	add     rax, rbx
-    adc     rdx, 0
-	add     [rdi-8], rax
-	adc     rdx, 0
-	dec     rcx
-	mov     rbx, rdx
-	jnz     .2
-	mov	    rdi, r8
-	mov     [rdi], rbx
-	dec	    qword [rsp]
-	lea	    rdi, [rdi+8]
-	jnz     .1
-
-    add     rsp, 5*8
-    pop     rdi
-    pop     rsi
-    pop     rbx
-    pop     rbp
-    ret
-
-.unroll:
-	mov     rdx, rcx
-    dec     rcx
-	sub     rdx, 2
-	neg     rcx
-	shr     rdx, 4
-	and     rcx, 15
-	mov     [rsp+16], rdx
-	mov     rdx, rcx
-	shl     rdx, 4
-    lea     r10, [.loop_base wrt rip]
-    add     rdx, r10
-    lea     rdx, [rdx+rcx*4]
-	add	    rdx, rcx
-	neg     rcx
-	mov	    r10, rcx
-	mov	    [rsp+24], rdx
-
-.4:	mov     rbp, r11
-    mov     rsi, r9
-    imul    rbp, [rdi]
-    mov     r8, rdi
-    mov     rcx, r10
-	mov     rdx, [rsp+16]
-	mov	    [rsp+8], rdx
-
-    mov     rax, [rsi]
-    lea     rsi, [rsi+rcx*8+8]
-    mul     rbp
-	lea     rdi, [rdi+rcx*8]
-	mov     rbx, rdx
-
-    mov     rdx, [rsp+24]
-    test    rcx, 1
-    mov     rcx, rax
-	cmovnz  rcx, rbx
-	cmovnz  rbx, rax
-	jmp     rdx
-
-    align   64
-
-.5:	add     rdi, 128
-.loop_base:
-    rloop rcx, rbx,  0
-    rloop rbx, rcx,  1
-    rloop rcx, rbx,  2
-    rloop rbx, rcx,  3
-    rloop rcx, rbx,  4
-    rloop rbx, rcx,  5
-    rloop rcx, rbx,  6
-    rloop rbx, rcx,  7
-    rloop rcx, rbx,  8
-    rloop rbx, rcx,  9
-    rloop rcx, rbx, 10
-    rloop rbx, rcx, 11
-    rloop rcx, rbx, 12
-    rloop rbx, rcx, 13
-    rloop rcx, rbx, 14
-    rloop rbx, rcx, 15
-
-    dec     qword [rsp+8]
-    lea     rsi, [rsi+128]
-    jns     .5
-
-    add     [rdi+128], rcx
-    mov     rdi, r8
-    adc     rbx, 0
-    mov     [rdi], rbx
-    dec     qword [rsp]
-    lea     rdi, [rdi+8]
-    jnz     .4
-
-    add     rsp, 5*8
-    pop     rdi
-    pop     rsi
-    pop     rbx
-    pop     rbp
-    ret
-ENDPROC_FRAME
-
-    end
diff --git a/build.vc14/assembler/mulredc.asm b/build.vc14/assembler/mulredc.asm
deleted file mode 100644
index ffe18e1c..00000000
--- a/build.vc14/assembler/mulredc.asm
+++ /dev/null
@@ -1,8 +0,0 @@
-
-%ifdef _WIN64
-%include "a_x64_mulredc.asm"
-%elifdef AMD_ASM
-%include "a_win32a_mulredc.asm"
-%else
-%include "a_win32p_mulredc.asm"
-%endif
diff --git a/build.vc14/assembler/mulredc.h b/build.vc14/assembler/mulredc.h
deleted file mode 100644
index 8902af37..00000000
--- a/build.vc14/assembler/mulredc.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef __ASM_REDC_H__
-#define __ASM_REDC_H__
-
-#include <gmp.h>
-
-extern void ecm_redc3(mp_limb_t *cp, const mp_limb_t *np, mp_size_t nn, mp_limb_t Nprim);
-
-
-/* WARNING: the size-1 version doesn't take pointers in input */
-extern mp_limb_t mulredc1(mp_limb_t *z, mp_limb_t x, mp_limb_t y, mp_limb_t m, mp_limb_t inv_m);
-
-extern mp_limb_t mulredc2(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc3(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc4(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc5(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc6(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc7(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc8(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc9(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc10(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc11(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc12(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc13(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc14(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc15(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc16(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc17(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc18(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc19(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc20(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-
-#endif
diff --git a/build.vc14/assembler/redc.asm b/build.vc14/assembler/redc.asm
deleted file mode 100644
index 1653e1ce..00000000
--- a/build.vc14/assembler/redc.asm
+++ /dev/null
@@ -1,7 +0,0 @@
-%ifdef _WIN64
-%include "a_x64_redc.asm"
-%elif AMD_ASM
-%include "a_win32a_redc.asm"
-%else
-%include "a_win32p_redc.asm"
-%endif
diff --git a/build.vc14/assembler/test_mulredc.c b/build.vc14/assembler/test_mulredc.c
deleted file mode 100644
index f95234da..00000000
--- a/build.vc14/assembler/test_mulredc.c
+++ /dev/null
@@ -1,303 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-
-#include <gmp.h>
-
-#include "asmredc.h"
-
-void mp_print(mp_limb_t *x, int N) {
-  int i;
-  for (i = 0; i < N-1; ++i)
-    printf("%lu + W*(", x[i]);
-  printf("%lu", x[N-1]);
-  for (i = 0; i < N-1; ++i)
-    printf(")");
-  printf("\n");
-}
-
-static mp_limb_t
-call_mulredc (int N, mp_limb_t *z, mp_limb_t *x, mp_limb_t *y, mp_limb_t *m,
-              mp_limb_t invm)
-{
-  mp_limb_t cy;
-
-  switch (N) 
-    {
-     case 1:
-      cy = mulredc1(z, x[0], y[0], m[0], invm);
-      break;
-     case 2:
-      cy = mulredc2(z, x, y, m, invm);
-      break;
-     case 3:
-      cy = mulredc3(z, x, y, m, invm);
-      break;
-     case 4:
-      cy = mulredc4(z, x, y, m, invm);
-      break;
-     case 5:
-      cy = mulredc5(z, x, y, m, invm);
-      break;
-     case 6:
-      cy = mulredc6(z, x, y, m, invm);
-      break;
-     case 7:
-      cy = mulredc7(z, x, y, m, invm);
-      break;
-     case 8:
-      cy = mulredc8(z, x, y, m, invm);
-      break;
-     case 9:
-      cy = mulredc9(z, x, y, m, invm);
-      break;
-     case 10:
-      cy = mulredc10(z, x, y, m, invm);
-      break;
-     case 11:
-      cy = mulredc11(z, x, y, m, invm);
-      break;
-     case 12:
-      cy = mulredc12(z, x, y, m, invm);
-      break;
-     case 13:
-      cy = mulredc13(z, x, y, m, invm);
-      break;
-     case 14:
-      cy = mulredc14(z, x, y, m, invm);
-      break;
-     case 15:
-      cy = mulredc15(z, x, y, m, invm);
-      break;
-     case 16:
-      cy = mulredc16(z, x, y, m, invm);
-      break;
-     case 17:
-      cy = mulredc17(z, x, y, m, invm);
-      break;
-     case 18:
-      cy = mulredc18(z, x, y, m, invm);
-      break;
-     case 19:
-      cy = mulredc19(z, x, y, m, invm);
-      break;
-     case 20:
-      cy = mulredc20(z, x, y, m, invm);
-      break;
-     default:
-      cy = mulredc20(z, x, y, m, invm);
-    }
-  return cy;
-}
-
-void test(mp_size_t N, int k)
-{
-  mp_limb_t *x, *y, *yp, *z, *m, invm, cy, cy2, *tmp, *tmp2, *tmp3;
-  int i, j;
-  
-  x = (mp_limb_t *) malloc(N*sizeof(mp_limb_t));
-  y = (mp_limb_t *) malloc(N*sizeof(mp_limb_t));
-  z = (mp_limb_t *) malloc((N+1)*sizeof(mp_limb_t));
-  m = (mp_limb_t *) malloc(N*sizeof(mp_limb_t));
-  tmp = (mp_limb_t *) malloc((2*N+2)*sizeof(mp_limb_t));
-  tmp2 = (mp_limb_t *) malloc((2*N+2)*sizeof(mp_limb_t));
-  tmp3 = (mp_limb_t *) malloc((2*N+2)*sizeof(mp_limb_t));
- 
-  if (x == NULL || y == NULL || z == NULL || m == NULL || tmp == NULL ||
-      tmp2 == NULL || tmp3 == NULL)
-    {
-      fprintf (stderr, "Cannot allocate memory in test_mulredc\n");
-      exit (1);
-    }
-
-  mpn_random2(m, N);
-  m[0] |= 1UL;
-  if (m[N-1] == 0) 
-    m[N-1] = 1UL;
-
-  invm = 1UL;
-  for (i = 0; i < 10; ++i)
-    invm = (2*invm-m[0]*invm*invm);
-  invm = -invm;
-
-  assert( (invm*m[0] +1UL) == 0UL);
-  
-  yp = y;
-  for (i=0; i < k; ++i) {
-    /* Try a few special cases */
-    if (i == 0)
-    {
-      /* Try all 0, product should be 0 */
-      for (j = 0; j < N; j++)
-        x[j] = y[j] = 0;
-    }
-    else if (i == 1)
-    {
-      /* Try all 1 */
-      for (j = 0; j < N; j++)
-        x[j] = y[j] = 1;
-    }
-    else if (i == 2)
-    {
-      /* Try all 2^wordsize - 1 */
-      for (j = 0; j < N; j++)
-        x[j] = y[j] = ~(0UL);
-    } 
-    else 
-    {
-      /* In the other cases, try random data */
-      if (i % 2 == 0)
-        {
-          /* Try squaring */
-          mpn_random2(x, N);
-          yp = x;
-        }
-      else
-        {
-          /* Try multiplication */
-          mpn_random2(x, N);
-          mpn_random2(y, N);
-        }
-    }
-    
-    // Mul followed by ecm_redc3
-    mpn_mul_n(tmp, x, yp, N);
-    ecm_redc3(tmp, m, N, invm);
-    cy2 = mpn_add_n (tmp2, tmp + N, tmp, N);
-
-    // Mixed mul and redc
-    cy = call_mulredc (N, z, x, yp, m, invm);
-    
-    if (cy != cy2)
-      printf ("i = %d: mulredc cy = %ld, mpn_mul_n/ecm_redc3 cy = %ld\n", 
-              i, (long) cy, (long) cy2);
-    assert (cy == cy2);
-    if (mpn_cmp(z,tmp2, N) != 0)
-      {
-        printf ("i = %d\nmulredc             = ", i);
-        for (j = N - 1; j >= 0; j--)
-          printf ("%lx ", z[j]);
-        printf ("\nmpn_mul_n/ecm_redc3 = ");
-        for (j = N - 1; j >= 0; j--)
-          printf ("%lx ", tmp2[j]);
-        printf ("\n");
-        assert (mpn_cmp(z,tmp2, N) == 0);
-      }
-
-    if (cy)
-      printf("!");
-    z[N] = cy;
-    // Check with pure gmp : multiply by 2^(N*GMP_NUMB_BITS) and compare.
-    for (j=0; j < N; ++j) {
-      tmp[j] = 0;
-      tmp[j+N] = z[j]; 
-    }
-    tmp[2*N] = z[N];
-    mpn_tdiv_qr(tmp2, tmp3, 0, tmp, 2*N+1, m, N);
-    for (j=0; j < N; ++j)
-      z[j] = tmp3[j]; 
-
-    mpn_mul_n(tmp, x, yp, N);
-    mpn_tdiv_qr(tmp2, tmp3, 0, tmp, 2*N, m, N);
-    
-    assert(mpn_cmp(z, tmp3, N) == 0);
-  }
-  
-  free(tmp); free(tmp2); free(tmp3);
-  free(x); free(y); free(z); free(m);
-}
-  
-
-
-int main(int argc, char** argv)
-{
-  int i, len;
-
-  if (argc > 1) /* Test a specific length */
-  {
-    len = atoi (argv[1]);
-    for (i = 0; i < 1; i++)
-      test (len, 1000000);
-    return 0;
-  }
-
-  for (;;) {
-    for (i = 1; i <= 20; ++i) {
-      test(i, 1000);
-    }
-#if 0
-    test(1, 1000);
-    test(2, 1000);
-    test(3, 1000);
-    test(4, 1000);
-    test(5, 1000);
-    test(6, 1000);
-    test(7, 1000);
-    test(8, 1000);
-    test(9, 1000);
-    test(10, 1000);
-    test(11, 1000);
-    test(12, 1000);
-    test(13, 100);
-    test(14, 100);
-    test(15, 100);
-    test(16, 100);
-    test(17, 100);
-    test(18, 100);
-    test(44, 10);
-    test(45, 10);
-    test(46, 10);
-    test(47, 10);
-    test(48, 10);
-    test(49, 10);
-#endif
-    printf("."); fflush(stdout);
-  }
-#if 0  
-  x[0] = 12580274668139321508UL;
-  x[1] = 9205793975152560417UL;
-  x[2] = 7857372727033793057UL;
-
-  y[0] = 13688385828267279103UL;
-  y[1] = 10575011835742767258UL;
-  y[2] = 8802048318027595690UL;
-
-  
-  m[0] = 2981542467342508025UL;
-  m[1] = 5964669706257742025UL;
-  m[2] = 18446744073678090270UL;
-
-  invm = 9419286575570128311UL;
-
-  carry = mulredc(z, x, y, m, 3, invm);
-
-  printf("%lu + 2^64*(%lu + 2^64*%lu), carry=%lu\n", z[0], z[1], z[2], carry);
-#endif
-  return 0;
-}
-
-
-#if 0
-
-W := 2^64;
-
-x0:= 12580274668139321508;
-x1:= 9205793975152560417;
-x2:= 7857372727033793057;
-x := x0 + W*(x1 + W*x2);
-
-y0:= 13688385828267279103;
-y1:= 10575011835742767258;
-y2:= 8802048318027595690;
-y := y0 + W*(y1 + W*y2);
-  
-m0:= 2981542467342508025;
-m1:= 5964669706257742025;
-m2:= 18446744073678090270;
-m := m0 + W*(m1 + W*m2);
-  
-invm := 9419286575570128311;
-
-
-
-#endif
diff --git a/build.vc14/bench_mulredc/Makefile.am b/build.vc14/bench_mulredc/Makefile.am
deleted file mode 100644
index 5a7c0bc7..00000000
--- a/build.vc14/bench_mulredc/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = bench_mulredc.vcxproj bench_mulredc.vcxproj.filters
diff --git a/build.vc14/bench_mulredc/bench_mulredc.vcxproj b/build.vc14/bench_mulredc/bench_mulredc.vcxproj
deleted file mode 100644
index 075bde43..00000000
--- a/build.vc14/bench_mulredc/bench_mulredc.vcxproj
+++ /dev/null
@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{4727DE12-787D-432D-B166-BF103B0C3C87}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <RootNamespace>bench_mulredc</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <LinkIncremental>true</LinkIncremental>
-    <OutDir>$(SolutionDir)..bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <LinkIncremental>true</LinkIncremental>
-    <OutDir>$(SolutionDir)..bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <LinkIncremental>false</LinkIncremental>
-    <OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <LinkIncremental>false</LinkIncremental>
-    <OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);..\..\;..\assembler;..\</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>psapi.lib;..\..\..\$(mp_dir)lib\$(IntDir)\mpir.lib;..\..\lib\$(IntDir)\libecm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);..\..\;..\assembler;..\</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>psapi.lib;..\..\..\$(mp_dir)lib\$(IntDir)\mpir.lib;..\..\lib\$(IntDir)\libecm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);..\..\;..\assembler;..\</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>psapi.lib;..\..\..\$(mp_dir)lib\$(IntDir)\mpir.lib;..\..\lib\$(IntDir)\libecm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>_WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);..\..\;..\assembler;..\</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>psapi.lib;..\..\..\$(mp_dir)lib\$(IntDir)\mpir.lib;..\..\lib\$(IntDir)\libecm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\bench_mulredc.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/bench_mulredc/bench_mulredc.vcxproj.filters b/build.vc14/bench_mulredc/bench_mulredc.vcxproj.filters
deleted file mode 100644
index 5e88a3d4..00000000
--- a/build.vc14/bench_mulredc/bench_mulredc.vcxproj.filters
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\bench_mulredc.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/config.h b/build.vc14/config.h
deleted file mode 100644
index 67936b0a..00000000
--- a/build.vc14/config.h
+++ /dev/null
@@ -1,246 +0,0 @@
-/* config.h.in.  Generated from configure.in by autoheader.  */
-
-#define VERSION ECM_VERSION
-
-#define VERSION_GPU "gpu_ecm-win"
-
-#define PACKAGE_BUGREPORT "ecm-discuss@inria.fr"
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
-   systems. This function is required for `alloca.c' support on those systems.
-   */
-#undef CRAY_STACKSEG_END
-
-/* Define to 1 if using `alloca.c'. */
-#define C_ALLOCA 1
-
-/* Define to 1 if you have the `access' function. */
-#undef HAVE_ACCESS
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-#define HAVE_ALLOCA 1
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-   */
-#undef HAVE_ALLOCA_H
-
-/* Define to 1 if you have the `ctime' function. */
-#define HAVE_CTIME 1
-
-/* Define to 1 if you have the <ctype.h> header file. */
-#define HAVE_CTYPE_H 1
-
-/* Define to 1 if you have the `floor' function. */
-#define HAVE_FLOOR 1
-
-/* Define to 1 if you have the `fmod' function. */
-#define HAVE_FMOD 1
-
-/* Define to 1 if you have the `gethostname' function. */
-#define HAVE_GETHOSTNAME 1
-
-/* Define to 1 if you have the `getrusage' function. */
-#define HAVE_GETRUSAGE   1
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#undef HAVE_GETTIMEOFDAY
-
-/* Define to 1 if you have the <gmp.h> header file. */
-#define HAVE_GMP_H 1
-
-/* Define to 1 if gwnum.a or gwnum.lib exist */
-#undef HAVE_GWNUM
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the <io.h> header file. */
-#undef HAVE_IO_H
-
-/* Define to 1 if you have the `isascii' function. */
-#undef HAVE_ISASCII
-
-/* Define to 1 if you have the `isdigit' function. */
-#define HAVE_ISDIGIT 1
-
-/* Define to 1 if you have the `isspace' function. */
-#define HAVE_ISSPACE 1
-
-/* Define to 1 if you have the `isxdigit' function. */
-#define HAVE_ISXDIGIT 1
-
-/* Define to 1 if you have the `m' library (-lm). */
-#undef HAVE_LIBM
-
-/* Define to 1 if you have the <limits.h> header file. */
-#define HAVE_LIMITS_H 1
-
-/* Define to 1 if you have the <malloc.h> header file. */
-#define HAVE_MALLOC_H 1
- 
-/* Define to 1 if you have the `malloc_usable_size' function. */
-#undef HAVE_MALLOC_USABLE_SIZE
-
-/* Define to 1 if you have the <math.h> header file. */
-#define HAVE_MATH_H 1
-
-/* Define to 1 if you have the `memmove' function. */
-#define HAVE_MEMMOVE 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `memset' function. */
-#define HAVE_MEMSET 1
-
-/* Define to 1 if you have the `nice' function. */
-#undef HAVE_NICE
-
-/* Define to 1 if you have the `pow' function. */
-#define HAVE_POW 1
-
-/* Define to 1 if you have the `signal' function. */
-#define HAVE_SIGNAL 1
-
-/* Define to 1 if you have the <signal.h> header file. */
-#define HAVE_SIGNAL_H 1
-
-/* Define to 1 if you have the `sqrt' function. */
-#define HAVE_SQRT 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the `strchr' function. */
-#define HAVE_STRCHR 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `strlen' function. */
-#define HAVE_STRLEN 1
-
-/* Define to 1 if you have the `strncasecmp' function. */
-#undef HAVE_STRNCASECMP
-
-/* Define to 1 if you have the `strstr' function. */
-#undef HAVE_STRSTR
-
-/* Define to 1 if you have the <sys/resource.h> header file. */
-#undef HAVE_SYS_RESOURCE_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the `time' function. */
-#undef HAVE_TIME
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the `unlink' function. */
-#define HAVE_UNLINK 1
-
-/* Define to 1 if you have the <windows.h> header file. */
-#define HAVE_WINDOWS_H 1
-
-/* Define to 1 if you have the `__gmpn_add_nc' function. */
-#if defined( _WIN64 )
-#  define HAVE___GMPN_ADD_NC 1
-#endif
-
-/* Define to 1 if you have the `__gmpn_mod_34lsub1' function. */
-#define HAVE___GMPN_MOD_34LSUB1 1
-
-/* Define to 1 if you have the `__gmpn_mul_fft' function. */
-#define HAVE___GMPN_MUL_FFT 1
-
-/* Define to 1 if you want memory debugging */
-#undef MEMORY_DEBUG
-
-/* Define if the system has the type `long long'. */
-#define HAVE_LONG_LONG		1
-#define HAVE_LONG_LONG_INT  1
-
-/* Define to 1 to use asm redc on x86 or x86_64 */
-#  define NATIVE_REDC   1         
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
-
-/* If using the C implementation of alloca, define if you know the
-   direction of stack growth for your system; otherwise it will be
-   automatically deduced at runtime.
-	STACK_DIRECTION > 0 => grows toward higher addresses
-	STACK_DIRECTION < 0 => grows toward lower addresses
-	STACK_DIRECTION = 0 => direction of growth unknown */
-#undef STACK_DIRECTION
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Define to 1 if you want assertions enabled */
-#undef WANT_ASSERT
-
-/* Define to 1 if you want shell command execution */
-#undef WANT_SHELLCMD
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* How to specify hot-spot attribute, if available */
-#define ATTRIBUTE_HOT
-
-#define HAVE___GMPN_REDC_1 1
-
-#define HAVE___GMPN_REDC_2 1
-
-#define HAVE_ASM_REDC3  1
-
-#define WINDOWS64_ABI   1
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
-   calls it, or to nothing if 'inline' is not supported under any name.  */
-#ifndef __cplusplus
-#define inline __inline
-#endif
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
-
-#define PRIdSIZE "Id"
-#define PRIuSIZE "Iu"
-
-#ifdef _MSC_VER
-
-#define __func__ __FUNCTION__
-
-/* define Windows tuning here */
-#  define __tune_corei7__
-
-#  if _MSC_VER < 1600
-#    define int64_t     __int64
-#    define uint64_t    unsigned __int64
-#  endif
-#  define strncasecmp strnicmp
-#  define access       _access 
-#  define alloca      _alloca
-#  define fseek64     _fseek64
-#  define ftell64     _ftell64
-#  define omp_get_thread_limit omp_get_max_threads
-#endif
diff --git a/build.vc14/ecm.sln b/build.vc14/ecm.sln
deleted file mode 100644
index e5543917..00000000
--- a/build.vc14/ecm.sln
+++ /dev/null
@@ -1,70 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.24720.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libecm", "libecm\libecm.vcxproj", "{CD555681-D65B-4173-A29C-B8BF06A4871B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ecm", "ecm\ecm.vcxproj", "{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tune", "tune\tune.vcxproj", "{80E08750-5C6C-492E-BB1E-7200978AE125}"
-	ProjectSection(ProjectDependencies) = postProject
-		{CD555681-D65B-4173-A29C-B8BF06A4871B} = {CD555681-D65B-4173-A29C-B8BF06A4871B}
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187} = {C0E2EA85-996A-4B5F-AD30-590FAF5B7187}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bench_mulredc", "bench_mulredc\bench_mulredc.vcxproj", "{4727DE12-787D-432D-B166-BF103B0C3C87}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multiecm", "multiecm\multiecm.vcxproj", "{16434DC2-371C-451B-A336-820499B98B8C}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Debug|Win32.ActiveCfg = Debug|Win32
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Debug|Win32.Build.0 = Debug|Win32
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Debug|x64.ActiveCfg = Debug|x64
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Debug|x64.Build.0 = Debug|x64
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Release|Win32.ActiveCfg = Release|Win32
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Release|Win32.Build.0 = Release|Win32
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Release|x64.ActiveCfg = Release|x64
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Release|x64.Build.0 = Release|x64
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Debug|Win32.Build.0 = Debug|Win32
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Debug|x64.ActiveCfg = Debug|x64
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Debug|x64.Build.0 = Debug|x64
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Release|Win32.ActiveCfg = Release|Win32
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Release|Win32.Build.0 = Release|Win32
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Release|x64.ActiveCfg = Release|x64
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Release|x64.Build.0 = Release|x64
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Debug|Win32.ActiveCfg = Release|x64
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Debug|x64.ActiveCfg = Release|x64
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Debug|x64.Build.0 = Release|x64
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Release|Win32.ActiveCfg = Release|Win32
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Release|Win32.Build.0 = Release|Win32
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Release|x64.ActiveCfg = Release|x64
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Release|x64.Build.0 = Release|x64
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Debug|Win32.ActiveCfg = Debug|Win32
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Debug|Win32.Build.0 = Debug|Win32
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Debug|x64.ActiveCfg = Debug|x64
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Debug|x64.Build.0 = Debug|x64
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Release|Win32.ActiveCfg = Release|Win32
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Release|Win32.Build.0 = Release|Win32
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Release|x64.ActiveCfg = Release|x64
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Release|x64.Build.0 = Release|x64
-		{16434DC2-371C-451B-A336-820499B98B8C}.Debug|Win32.ActiveCfg = Debug|Win32
-		{16434DC2-371C-451B-A336-820499B98B8C}.Debug|Win32.Build.0 = Debug|Win32
-		{16434DC2-371C-451B-A336-820499B98B8C}.Debug|x64.ActiveCfg = Debug|x64
-		{16434DC2-371C-451B-A336-820499B98B8C}.Debug|x64.Build.0 = Debug|x64
-		{16434DC2-371C-451B-A336-820499B98B8C}.Release|Win32.ActiveCfg = Release|Win32
-		{16434DC2-371C-451B-A336-820499B98B8C}.Release|Win32.Build.0 = Release|Win32
-		{16434DC2-371C-451B-A336-820499B98B8C}.Release|x64.ActiveCfg = Release|x64
-		{16434DC2-371C-451B-A336-820499B98B8C}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/build.vc14/ecm/Makefile.am b/build.vc14/ecm/Makefile.am
deleted file mode 100644
index 2f05e85c..00000000
--- a/build.vc14/ecm/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = ecm.vcxproj ecm.vcxproj.filters
diff --git a/build.vc14/ecm/ecm.vcxproj b/build.vc14/ecm/ecm.vcxproj
deleted file mode 100644
index 0d9ef9be..00000000
--- a/build.vc14/ecm/ecm.vcxproj
+++ /dev/null
@@ -1,239 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}</ProjectGuid>
-    <RootNamespace>ecm</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v110</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="..\vsyasm.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;NDEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;..\..\..\$(mp_dir)lib\$(Platform)\release\$(mp_lib);%(AdditionalDependencies)</AdditionalDependencies>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <StackReserveSize>8388608</StackReserveSize>
-      <StackCommitSize>65536</StackCommitSize>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;_DEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <StackReserveSize>8388608</StackReserveSize>
-      <StackCommitSize>65536</StackCommitSize>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\aprtcle\mpz_aprcl.c" />
-    <ClCompile Include="..\..\auxi.c" />
-    <ClCompile Include="..\..\b1_ainc.c" />
-    <ClCompile Include="..\..\candi.c" />
-    <ClCompile Include="..\..\eval.c" />
-    <ClCompile Include="..\..\getprime_r.c" />
-    <ClCompile Include="..\..\main.c" />
-    <ClCompile Include="..\..\memusage.c" />
-    <ClCompile Include="..\..\resume.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-    <ClInclude Include="..\..\champions.h" />
-    <ClInclude Include="..\..\ecm-ecm.h" />
-    <ClInclude Include="..\..\ecm-gmp.h" />
-    <ClInclude Include="..\..\ecm-impl.h" />
-    <ClInclude Include="..\..\ecm-params.h" />
-    <ClInclude Include="..\..\ecm.h" />
-    <ClInclude Include="..\..\getprime_r.h" />
-    <ClInclude Include="..\..\longlong.h" />
-    <ClInclude Include="..\config.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libecm\libecm.vcxproj">
-      <Project>{cd555681-d65b-4173-a29c-b8bf06a4871b}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="..\vsyasm.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/ecm/ecm.vcxproj.filters b/build.vc14/ecm/ecm.vcxproj.filters
deleted file mode 100644
index a806e09e..00000000
--- a/build.vc14/ecm/ecm.vcxproj.filters
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\b1_ainc.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\candi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\eval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\main.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\resume.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\memusage.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\getprime_r.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\aprtcle\mpz_aprcl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\champions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\getprime_r.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/ecm_gpu.sln b/build.vc14/ecm_gpu.sln
deleted file mode 100644
index 87325a62..00000000
--- a/build.vc14/ecm_gpu.sln
+++ /dev/null
@@ -1,39 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2012
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libecm_gpu", "libecm_gpu\libecm_gpu.vcxproj", "{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ecm_gpu", "ecm_gpu\ecm_gpu.vcxproj", "{1B353D8B-9808-4EB3-A5E7-075D751757AD}"
-	ProjectSection(ProjectDependencies) = postProject
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00} = {3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Debug|Win32.Build.0 = Debug|Win32
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Debug|x64.ActiveCfg = Debug|x64
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Debug|x64.Build.0 = Debug|x64
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Release|Win32.ActiveCfg = Release|Win32
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Release|Win32.Build.0 = Release|Win32
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Release|x64.ActiveCfg = Release|x64
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Release|x64.Build.0 = Release|x64
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Debug|Win32.ActiveCfg = Debug|Win32
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Debug|Win32.Build.0 = Debug|Win32
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Debug|x64.ActiveCfg = Debug|x64
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Debug|x64.Build.0 = Debug|x64
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Release|Win32.ActiveCfg = Release|Win32
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Release|Win32.Build.0 = Release|Win32
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Release|x64.ActiveCfg = Release|x64
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/build.vc14/ecm_gpu/Makefile.am b/build.vc14/ecm_gpu/Makefile.am
deleted file mode 100644
index 0b43ffe2..00000000
--- a/build.vc14/ecm_gpu/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = ecm_gpu.vcxproj ecm_gpu.vcxproj.filters libecm_gpu.vcxproj libecm_gpu.vcxproj.filters
diff --git a/build.vc14/ecm_gpu/ecm.vcxproj.filters b/build.vc14/ecm_gpu/ecm.vcxproj.filters
deleted file mode 100644
index f3880aba..00000000
--- a/build.vc14/ecm_gpu/ecm.vcxproj.filters
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\b1_ainc.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\candi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\eval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\getprime.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\main.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\random.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\resume.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\champions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/ecm_gpu/ecm_gpu.vcxproj b/build.vc14/ecm_gpu/ecm_gpu.vcxproj
deleted file mode 100644
index 5a311cd7..00000000
--- a/build.vc14/ecm_gpu/ecm_gpu.vcxproj
+++ /dev/null
@@ -1,286 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{1B353D8B-9808-4EB3-A5E7-075D751757AD}</ProjectGuid>
-    <RootNamespace>ecm_gpu</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="..\vsyasm.props" />
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 9.0.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC50;NDEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);..\..\lib\$(IntDir)libecm_gpu.lib;advapi32.lib;ws2_32.lib;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\$(Platform)\cudart.lib</AdditionalDependencies>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <CudaCompile>
-      <CodeGeneration>compute_50,sm_50</CodeGeneration>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <TargetMachinePlatform>32</TargetMachinePlatform>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <Defines>
-      </Defines>
-    </CudaCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC50;_WIN64;NDEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;..\..\..\$(mp_dir)lib\$(Platform)\release\$(mp_lib);%(AdditionalDependencies)</AdditionalDependencies>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <StackReserveSize>8388608</StackReserveSize>
-      <StackCommitSize>65536</StackCommitSize>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC50;_DEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);..\..\lib\$(IntDir)libecm_gpu.lib;advapi32.lib;ws2_32.lib;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\$(Platform)\cudart.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <CudaCompile>
-      <CodeGeneration>compute_50,sm_50</CodeGeneration>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <TargetMachinePlatform>32</TargetMachinePlatform>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <Defines>
-      </Defines>
-    </CudaCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC50;_WIN64;_DEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);..\..\lib\$(IntDir)libecm_gpu.lib;advapi32.lib;ws2_32.lib;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\$(Platform)\cudart.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <StackReserveSize>8388608</StackReserveSize>
-      <StackCommitSize>65536</StackCommitSize>
-    </Link>
-    <CudaCompile>
-      <CodeGeneration>compute_50,sm_50</CodeGeneration>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <TargetMachinePlatform>64</TargetMachinePlatform>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <Defines>
-      </Defines>
-    </CudaCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);..\..\lib\$(IntDir)libecm_gpu.lib;advapi32.lib;ws2_32.lib;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\$(Platform)\cudart.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-    <CudaCompile>
-      <CodeGeneration>compute_50,sm_50</CodeGeneration>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <TargetMachinePlatform>64</TargetMachinePlatform>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <Defines>
-      </Defines>
-    </CudaCompile>
-    <CudaLink>
-      <AdditionalDependencies>
-      </AdditionalDependencies>
-    </CudaLink>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxi.c" />
-    <ClCompile Include="..\..\b1_ainc.c" />
-    <ClCompile Include="..\..\candi.c" />
-    <ClCompile Include="..\..\eval.c" />
-    <ClCompile Include="..\..\getprime_r.c" />
-    <ClCompile Include="..\..\main.c" />
-    <ClCompile Include="..\..\memusage.c" />
-    <ClCompile Include="..\..\random.c" />
-    <ClCompile Include="..\..\resume.c" />
-    <ClCompile Include="..\vacopy.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-    <ClInclude Include="..\..\champions.h" />
-    <ClInclude Include="..\..\config.h" />
-    <ClInclude Include="..\..\ecm-ecm.h" />
-    <ClInclude Include="..\..\ecm-gmp.h" />
-    <ClInclude Include="..\..\ecm-impl.h" />
-    <ClInclude Include="..\..\ecm-params.h" />
-    <ClInclude Include="..\..\ecm.h" />
-    <ClInclude Include="..\..\getprime_r.h" />
-    <ClInclude Include="..\..\longlong.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <Object Include="..\fto13.obj">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </Object>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="..\vsyasm.targets" />
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 9.0.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/ecm_gpu/ecm_gpu.vcxproj.filters b/build.vc14/ecm_gpu/ecm_gpu.vcxproj.filters
deleted file mode 100644
index 1357d945..00000000
--- a/build.vc14/ecm_gpu/ecm_gpu.vcxproj.filters
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <ClCompile Include="..\vacopy.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\auxi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\b1_ainc.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\candi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\eval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\main.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\random.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\resume.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\getprime_r.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\memusage.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\champions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\getprime_r.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{2a13feaf-0c0e-469a-8047-82c647322da9}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{163547c7-89d7-4ddc-b0ad-02b4cfd722b4}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <Object Include="..\fto13.obj" />
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/file_copy.bat b/build.vc14/file_copy.bat
deleted file mode 100644
index dcb84ef9..00000000
--- a/build.vc14/file_copy.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-if not exist %1 ( echo file_copy failure: %1 not found && goto exit )
-if exist %2     ( fc %1 %2 > nul && if not %errorlevel 1 goto exit )
-echo copying %1 to %2 && copy %1 %2
-:exit
diff --git a/build.vc14/gen_ecm_h.bat b/build.vc14/gen_ecm_h.bat
deleted file mode 100644
index 280470d5..00000000
--- a/build.vc14/gen_ecm_h.bat
+++ /dev/null
@@ -1,13 +0,0 @@
-@echo off
-echo creating ecm.h from ecm.h.in
-echo /* generated from ecm-h.in by gen_ecm_h.bat */>tmp.h
-
-for /f "tokens=1,2*" %%a in (..\ecm.h.in) do (
-  if "%%a" EQU "#undef" (
-    if "%%b" EQU "ECM_VERSION" (
-      echo #define ECM_VERSION "7.0.6-rc1">>tmp.h
-    )
-  ) else echo %%a %%b %%c>>tmp.h
-)
-
-call out_copy_rename tmp.h ..\ ecm.h
diff --git a/build.vc14/getopt.c b/build.vc14/getopt.c
deleted file mode 100644
index 1716d95b..00000000
--- a/build.vc14/getopt.c
+++ /dev/null
@@ -1,1281 +0,0 @@
-/* Getopt for GNU.
-   NOTE: getopt is now part of the C library, so if you don't know what
-   "Keep this file name-space clean" means, talk to drepper@gnu.org
-   before changing it!
-   Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002
-   	Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
-   Ditto for AIX 3.2 and <stdlib.h>.  */
-
-#define HAVE_STRING_H	1
-
-#ifndef _NO_PROTO
-# define _NO_PROTO
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if !defined __STDC__ || !__STDC__
-/* This is a separate conditional since some stdc systems
-   reject `defined (const)'.  */
-# ifndef const
-#  define const
-# endif
-#endif
-
-#include <stdio.h>
-
-/* Comment out all this code if we are using the GNU C Library, and are not
-   actually compiling the library itself.  This code is part of the GNU C
-   Library, but also included in many other GNU distributions.  Compiling
-   and linking in this code is a waste when using the GNU C library
-   (especially if it is a shared library).  Rather than having every GNU
-   program understand `configure --with-gnu-libc' and omit the object files,
-   it is simpler to just do this in the source for each such file.  */
-
-#define GETOPT_INTERFACE_VERSION 2
-#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
-# include <gnu-versions.h>
-# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
-#  define ELIDE_CODE
-# endif
-#endif
-
-#ifndef ELIDE_CODE
-
-
-/* This needs to come after some library #include
-   to get __GNU_LIBRARY__ defined.  */
-#ifdef	__GNU_LIBRARY__
-/* Don't include stdlib.h for non-GNU C libraries because some of them
-   contain conflicting prototypes for getopt.  */
-# include <stdlib.h>
-# include <unistd.h>
-#endif	/* GNU C library.  */
-
-#ifdef VMS
-# include <unixlib.h>
-# if HAVE_STRING_H - 0
-#  include <string.h>
-# endif
-#endif
-
-#ifndef _
-/* This is for other GNU distributions with internationalized messages.  */
-# if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
-#  include <libintl.h>
-#  ifndef _
-#   define _(msgid)	gettext (msgid)
-#  endif
-# else
-#  define _(msgid)	(msgid)
-# endif
-# if defined _LIBC && defined USE_IN_LIBIO
-#  include <wchar.h>
-# endif
-#endif
-
-#ifndef attribute_hidden
-# define attribute_hidden
-#endif
-
-/* This version of `getopt' appears to the caller like standard Unix `getopt'
-   but it behaves differently for the user, since it allows the user
-   to intersperse the options with the other arguments.
-
-   As `getopt' works, it permutes the elements of ARGV so that,
-   when it is done, all the options precede everything else.  Thus
-   all application programs are extended to handle flexible argument order.
-
-   Setting the environment variable POSIXLY_CORRECT disables permutation.
-   Then the behavior is completely standard.
-
-   GNU application programs can use a third alternative mode in which
-   they can distinguish the relative order of options and other arguments.  */
-
-#include "getopt.h"
-
-/* For communication from `getopt' to the caller.
-   When `getopt' finds an option that takes an argument,
-   the argument value is returned here.
-   Also, when `ordering' is RETURN_IN_ORDER,
-   each non-option ARGV-element is returned here.  */
-
-char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
-   This is used for communication to and from the caller
-   and for communication between successive calls to `getopt'.
-
-   On entry to `getopt', zero means this is the first call; initialize.
-
-   When `getopt' returns -1, this is the index of the first of the
-   non-option elements that the caller should itself scan.
-
-   Otherwise, `optind' communicates from one call to the next
-   how much of ARGV has been scanned so far.  */
-
-/* 1003.2 says this must be 1 before any call.  */
-int optind = 1;
-
-/* Formerly, initialization of getopt depended on optind==0, which
-   causes problems with re-calling getopt as programs generally don't
-   know that. */
-
-int __getopt_initialized attribute_hidden;
-
-/* The next char to be scanned in the option-element
-   in which the last option character we returned was found.
-   This allows us to pick up the scan where we left off.
-
-   If this is zero, or a null string, it means resume the scan
-   by advancing to the next ARGV-element.  */
-
-static char *nextchar;
-
-/* Callers store zero here to inhibit the error message
-   for unrecognized options.  */
-
-int opterr = 1;
-
-/* Set to an option character which was unrecognized.
-   This must be initialized on some systems to avoid linking in the
-   system's own getopt implementation.  */
-
-int optopt = '?';
-
-/* Describe how to deal with options that follow non-option ARGV-elements.
-
-   If the caller did not specify anything,
-   the default is REQUIRE_ORDER if the environment variable
-   POSIXLY_CORRECT is defined, PERMUTE otherwise.
-
-   REQUIRE_ORDER means don't recognize them as options;
-   stop option processing when the first non-option is seen.
-   This is what Unix does.
-   This mode of operation is selected by either setting the environment
-   variable POSIXLY_CORRECT, or using `+' as the first character
-   of the list of option characters.
-
-   PERMUTE is the default.  We permute the contents of ARGV as we scan,
-   so that eventually all the non-options are at the end.  This allows options
-   to be given in any order, even with programs that were not written to
-   expect this.
-
-   RETURN_IN_ORDER is an option available to programs that were written
-   to expect options and other ARGV-elements in any order and that care about
-   the ordering of the two.  We describe each non-option ARGV-element
-   as if it were the argument of an option with character code 1.
-   Using `-' as the first character of the list of option characters
-   selects this mode of operation.
-
-   The special argument `--' forces an end of option-scanning regardless
-   of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
-   `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
-
-static enum
-{
-  REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
-} ordering;
-
-/* Value of POSIXLY_CORRECT environment variable.  */
-static char *posixly_correct;
-
-#ifdef	__GNU_LIBRARY__
-/* We want to avoid inclusion of string.h with non-GNU libraries
-   because there are many ways it can cause trouble.
-   On some systems, it contains special magic macros that don't work
-   in GCC.  */
-# include <string.h>
-# define my_index	strchr
-#else
-
-# if HAVE_STRING_H
-#  include <string.h>
-# else
-#  include <strings.h>
-# endif
-
-/* Avoid depending on library functions or files
-   whose names are inconsistent.  */
-
-#ifndef getenv
-extern char *getenv ();
-#endif
-
-static char *
-my_index (str, chr)
-     const char *str;
-     int chr;
-{
-  while (*str)
-    {
-      if (*str == chr)
-	return (char *) str;
-      str++;
-    }
-  return 0;
-}
-
-/* If using GCC, we can safely declare strlen this way.
-   If not using GCC, it is ok not to declare it.  */
-#ifdef __GNUC__
-/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
-   That was relevant to code that was here before.  */
-# if (!defined __STDC__ || !__STDC__) && !defined strlen
-/* gcc with -traditional declares the built-in strlen to return int,
-   and has done so at least since version 2.4.5. -- rms.  */
-extern int strlen (const char *);
-# endif /* not __STDC__ */
-#endif /* __GNUC__ */
-
-#endif /* not __GNU_LIBRARY__ */
-
-/* Handle permutation of arguments.  */
-
-/* Describe the part of ARGV that contains non-options that have
-   been skipped.  `first_nonopt' is the index in ARGV of the first of them;
-   `last_nonopt' is the index after the last of them.  */
-
-static int first_nonopt;
-static int last_nonopt;
-
-#ifdef _LIBC
-/* Stored original parameters.
-   XXX This is no good solution.  We should rather copy the args so
-   that we can compare them later.  But we must not use malloc(3).  */
-extern int __libc_argc;
-extern char **__libc_argv;
-
-/* Bash 2.0 gives us an environment variable containing flags
-   indicating ARGV elements that should not be considered arguments.  */
-
-# ifdef USE_NONOPTION_FLAGS
-/* Defined in getopt_init.c  */
-extern char *__getopt_nonoption_flags;
-
-static int nonoption_flags_max_len;
-static int nonoption_flags_len;
-# endif
-
-# ifdef USE_NONOPTION_FLAGS
-#  define SWAP_FLAGS(ch1, ch2) \
-  if (nonoption_flags_len > 0)						      \
-    {									      \
-      char __tmp = __getopt_nonoption_flags[ch1];			      \
-      __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2];	      \
-      __getopt_nonoption_flags[ch2] = __tmp;				      \
-    }
-# else
-#  define SWAP_FLAGS(ch1, ch2)
-# endif
-#else	/* !_LIBC */
-# define SWAP_FLAGS(ch1, ch2)
-#endif	/* _LIBC */
-
-/* Exchange two adjacent subsequences of ARGV.
-   One subsequence is elements [first_nonopt,last_nonopt)
-   which contains all the non-options that have been skipped so far.
-   The other is elements [last_nonopt,optind), which contains all
-   the options processed since those non-options were skipped.
-
-   `first_nonopt' and `last_nonopt' are relocated so that they describe
-   the new indices of the non-options in ARGV after they are moved.  */
-
-#if defined __STDC__ && __STDC__
-static void exchange (char **);
-#endif
-
-static void
-exchange (argv)
-     char **argv;
-{
-  int bottom = first_nonopt;
-  int middle = last_nonopt;
-  int top = optind;
-  char *tem;
-
-  /* Exchange the shorter segment with the far end of the longer segment.
-     That puts the shorter segment into the right place.
-     It leaves the longer segment in the right place overall,
-     but it consists of two parts that need to be swapped next.  */
-
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
-  /* First make sure the handling of the `__getopt_nonoption_flags'
-     string can work normally.  Our top argument must be in the range
-     of the string.  */
-  if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
-    {
-      /* We must extend the array.  The user plays games with us and
-	 presents new arguments.  */
-      char *new_str = malloc (top + 1);
-      if (new_str == NULL)
-	nonoption_flags_len = nonoption_flags_max_len = 0;
-      else
-	{
-	  memset (__mempcpy (new_str, __getopt_nonoption_flags,
-			     nonoption_flags_max_len),
-		  '\0', top + 1 - nonoption_flags_max_len);
-	  nonoption_flags_max_len = top + 1;
-	  __getopt_nonoption_flags = new_str;
-	}
-    }
-#endif
-
-  while (top > middle && middle > bottom)
-    {
-      if (top - middle > middle - bottom)
-	{
-	  /* Bottom segment is the short one.  */
-	  int len = middle - bottom;
-	  register int i;
-
-	  /* Swap it with the top part of the top segment.  */
-	  for (i = 0; i < len; i++)
-	    {
-	      tem = argv[bottom + i];
-	      argv[bottom + i] = argv[top - (middle - bottom) + i];
-	      argv[top - (middle - bottom) + i] = tem;
-	      SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
-	    }
-	  /* Exclude the moved bottom segment from further swapping.  */
-	  top -= len;
-	}
-      else
-	{
-	  /* Top segment is the short one.  */
-	  int len = top - middle;
-	  register int i;
-
-	  /* Swap it with the bottom part of the bottom segment.  */
-	  for (i = 0; i < len; i++)
-	    {
-	      tem = argv[bottom + i];
-	      argv[bottom + i] = argv[middle + i];
-	      argv[middle + i] = tem;
-	      SWAP_FLAGS (bottom + i, middle + i);
-	    }
-	  /* Exclude the moved top segment from further swapping.  */
-	  bottom += len;
-	}
-    }
-
-  /* Update records for the slots the non-options now occupy.  */
-
-  first_nonopt += (optind - last_nonopt);
-  last_nonopt = optind;
-}
-
-/* Initialize the internal data when the first call is made.  */
-
-#if defined __STDC__ && __STDC__
-static const char *_getopt_initialize (int, char *const *, const char *);
-#endif
-static const char *
-_getopt_initialize (argc, argv, optstring)
-     int argc;
-     char *const *argv;
-     const char *optstring;
-{
-  /* Start processing options with ARGV-element 1 (since ARGV-element 0
-     is the program name); the sequence of previously skipped
-     non-option ARGV-elements is empty.  */
-
-  first_nonopt = last_nonopt = optind;
-
-  nextchar = NULL;
-
-  posixly_correct = getenv ("POSIXLY_CORRECT");
-
-  /* Determine how to handle the ordering of options and nonoptions.  */
-
-  if (optstring[0] == '-')
-    {
-      ordering = RETURN_IN_ORDER;
-      ++optstring;
-    }
-  else if (optstring[0] == '+')
-    {
-      ordering = REQUIRE_ORDER;
-      ++optstring;
-    }
-  else if (posixly_correct != NULL)
-    ordering = REQUIRE_ORDER;
-  else
-    ordering = PERMUTE;
-
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
-  if (posixly_correct == NULL
-      && argc == __libc_argc && argv == __libc_argv)
-    {
-      if (nonoption_flags_max_len == 0)
-	{
-	  if (__getopt_nonoption_flags == NULL
-	      || __getopt_nonoption_flags[0] == '\0')
-	    nonoption_flags_max_len = -1;
-	  else
-	    {
-	      const char *orig_str = __getopt_nonoption_flags;
-	      int len = nonoption_flags_max_len = strlen (orig_str);
-	      if (nonoption_flags_max_len < argc)
-		nonoption_flags_max_len = argc;
-	      __getopt_nonoption_flags =
-		(char *) malloc (nonoption_flags_max_len);
-	      if (__getopt_nonoption_flags == NULL)
-		nonoption_flags_max_len = -1;
-	      else
-		memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
-			'\0', nonoption_flags_max_len - len);
-	    }
-	}
-      nonoption_flags_len = nonoption_flags_max_len;
-    }
-  else
-    nonoption_flags_len = 0;
-#endif
-
-  return optstring;
-}
-
-/* Scan elements of ARGV (whose length is ARGC) for option characters
-   given in OPTSTRING.
-
-   If an element of ARGV starts with '-', and is not exactly "-" or "--",
-   then it is an option element.  The characters of this element
-   (aside from the initial '-') are option characters.  If `getopt'
-   is called repeatedly, it returns successively each of the option characters
-   from each of the option elements.
-
-   If `getopt' finds another option character, it returns that character,
-   updating `optind' and `nextchar' so that the next call to `getopt' can
-   resume the scan with the following option character or ARGV-element.
-
-   If there are no more option characters, `getopt' returns -1.
-   Then `optind' is the index in ARGV of the first ARGV-element
-   that is not an option.  (The ARGV-elements have been permuted
-   so that those that are not options now come last.)
-
-   OPTSTRING is a string containing the legitimate option characters.
-   If an option character is seen that is not listed in OPTSTRING,
-   return '?' after printing an error message.  If you set `opterr' to
-   zero, the error message is suppressed but we still return '?'.
-
-   If a char in OPTSTRING is followed by a colon, that means it wants an arg,
-   so the following text in the same ARGV-element, or the text of the following
-   ARGV-element, is returned in `optarg'.  Two colons mean an option that
-   wants an optional arg; if there is text in the current ARGV-element,
-   it is returned in `optarg', otherwise `optarg' is set to zero.
-
-   If OPTSTRING starts with `-' or `+', it requests different methods of
-   handling the non-option ARGV-elements.
-   See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
-
-   Long-named options begin with `--' instead of `-'.
-   Their names may be abbreviated as long as the abbreviation is unique
-   or is an exact match for some defined option.  If they have an
-   argument, it follows the option name in the same ARGV-element, separated
-   from the option name by a `=', or else the in next ARGV-element.
-   When `getopt' finds a long-named option, it returns 0 if that option's
-   `flag' field is nonzero, the value of the option's `val' field
-   if the `flag' field is zero.
-
-   The elements of ARGV aren't really const, because we permute them.
-   But we pretend they're const in the prototype to be compatible
-   with other systems.
-
-   LONGOPTS is a vector of `struct option' terminated by an
-   element containing a name which is zero.
-
-   LONGIND returns the index in LONGOPT of the long-named option found.
-   It is only valid when a long-named option has been found by the most
-   recent call.
-
-   If LONG_ONLY is nonzero, '-' as well as '--' can introduce
-   long-named options.  */
-
-int
-_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
-     int argc;
-     char *const *argv;
-     const char *optstring;
-     const struct option *longopts;
-     int *longind;
-     int long_only;
-{
-  int print_errors = opterr;
-  if (optstring[0] == ':')
-    print_errors = 0;
-
-  if (argc < 1)
-    return -1;
-
-  optarg = NULL;
-
-  if (optind == 0 || !__getopt_initialized)
-    {
-      if (optind == 0)
-	optind = 1;	/* Don't scan ARGV[0], the program name.  */
-      optstring = _getopt_initialize (argc, argv, optstring);
-      __getopt_initialized = 1;
-    }
-
-  /* Test whether ARGV[optind] points to a non-option argument.
-     Either it does not have option syntax, or there is an environment flag
-     from the shell indicating it is not an option.  The later information
-     is only used when the used in the GNU libc.  */
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
-# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0'	      \
-		      || (optind < nonoption_flags_len			      \
-			  && __getopt_nonoption_flags[optind] == '1'))
-#else
-# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
-#endif
-
-  if (nextchar == NULL || *nextchar == '\0')
-    {
-      /* Advance to the next ARGV-element.  */
-
-      /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
-	 moved back by the user (who may also have changed the arguments).  */
-      if (last_nonopt > optind)
-	last_nonopt = optind;
-      if (first_nonopt > optind)
-	first_nonopt = optind;
-
-      if (ordering == PERMUTE)
-	{
-	  /* If we have just processed some options following some non-options,
-	     exchange them so that the options come first.  */
-
-	  if (first_nonopt != last_nonopt && last_nonopt != optind)
-	    exchange ((char **) argv);
-	  else if (last_nonopt != optind)
-	    first_nonopt = optind;
-
-	  /* Skip any additional non-options
-	     and extend the range of non-options previously skipped.  */
-
-	  while (optind < argc && NONOPTION_P)
-	    optind++;
-	  last_nonopt = optind;
-	}
-
-      /* The special ARGV-element `--' means premature end of options.
-	 Skip it like a null option,
-	 then exchange with previous non-options as if it were an option,
-	 then skip everything else like a non-option.  */
-
-      if (optind != argc && !strcmp (argv[optind], "--"))
-	{
-	  optind++;
-
-	  if (first_nonopt != last_nonopt && last_nonopt != optind)
-	    exchange ((char **) argv);
-	  else if (first_nonopt == last_nonopt)
-	    first_nonopt = optind;
-	  last_nonopt = argc;
-
-	  optind = argc;
-	}
-
-      /* If we have done all the ARGV-elements, stop the scan
-	 and back over any non-options that we skipped and permuted.  */
-
-      if (optind == argc)
-	{
-	  /* Set the next-arg-index to point at the non-options
-	     that we previously skipped, so the caller will digest them.  */
-	  if (first_nonopt != last_nonopt)
-	    optind = first_nonopt;
-	  return -1;
-	}
-
-      /* If we have come to a non-option and did not permute it,
-	 either stop the scan or describe it to the caller and pass it by.  */
-
-      if (NONOPTION_P)
-	{
-	  if (ordering == REQUIRE_ORDER)
-	    return -1;
-	  optarg = argv[optind++];
-	  return 1;
-	}
-
-      /* We have found another option-ARGV-element.
-	 Skip the initial punctuation.  */
-
-      nextchar = (argv[optind] + 1
-		  + (longopts != NULL && argv[optind][1] == '-'));
-    }
-
-  /* Decode the current option-ARGV-element.  */
-
-  /* Check whether the ARGV-element is a long option.
-
-     If long_only and the ARGV-element has the form "-f", where f is
-     a valid short option, don't consider it an abbreviated form of
-     a long option that starts with f.  Otherwise there would be no
-     way to give the -f short option.
-
-     On the other hand, if there's a long option "fubar" and
-     the ARGV-element is "-fu", do consider that an abbreviation of
-     the long option, just like "--fu", and not "-f" with arg "u".
-
-     This distinction seems to be the most useful approach.  */
-
-  if (longopts != NULL
-      && (argv[optind][1] == '-'
-	  || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
-    {
-      char *nameend;
-      const struct option *p;
-      const struct option *pfound = NULL;
-      int exact = 0;
-      int ambig = 0;
-      int indfound = -1;
-      int option_index;
-
-      for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
-	/* Do nothing.  */ ;
-
-      /* Test all long options for either exact match
-	 or abbreviated matches.  */
-      for (p = longopts, option_index = 0; p->name; p++, option_index++)
-	if (!strncmp (p->name, nextchar, nameend - nextchar))
-	  {
-	    if ((unsigned int) (nameend - nextchar)
-		== (unsigned int) strlen (p->name))
-	      {
-		/* Exact match found.  */
-		pfound = p;
-		indfound = option_index;
-		exact = 1;
-		break;
-	      }
-	    else if (pfound == NULL)
-	      {
-		/* First nonexact match found.  */
-		pfound = p;
-		indfound = option_index;
-	      }
-	    else if (long_only
-		     || pfound->has_arg != p->has_arg
-		     || pfound->flag != p->flag
-		     || pfound->val != p->val)
-	      /* Second or later nonexact match found.  */
-	      ambig = 1;
-	  }
-
-      if (ambig && !exact)
-	{
-	  if (print_errors)
-	    {
-#if defined _LIBC && defined USE_IN_LIBIO
-	      char *buf;
-
-	      if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
-			      argv[0], argv[optind]) >= 0)
-		{
-
-		  if (_IO_fwide (stderr, 0) > 0)
-		    __fwprintf (stderr, L"%s", buf);
-		  else
-		    fputs (buf, stderr);
-
-		  free (buf);
-		}
-#else
-	      fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
-		       argv[0], argv[optind]);
-#endif
-	    }
-	  nextchar += strlen (nextchar);
-	  optind++;
-	  optopt = 0;
-	  return '?';
-	}
-
-      if (pfound != NULL)
-	{
-	  option_index = indfound;
-	  optind++;
-	  if (*nameend)
-	    {
-	      /* Don't test has_arg with >, because some C compilers don't
-		 allow it to be used on enums.  */
-	      if (pfound->has_arg)
-		optarg = nameend + 1;
-	      else
-		{
-		  if (print_errors)
-		    {
-#if defined _LIBC && defined USE_IN_LIBIO
-		      char *buf;
-		      int n;
-#endif
-
-		      if (argv[optind - 1][1] == '-')
-			{
-			  /* --option */
-#if defined _LIBC && defined USE_IN_LIBIO
-			  n = __asprintf (&buf, _("\
-%s: option `--%s' doesn't allow an argument\n"),
-					  argv[0], pfound->name);
-#else
-			  fprintf (stderr, _("\
-%s: option `--%s' doesn't allow an argument\n"),
-				   argv[0], pfound->name);
-#endif
-			}
-		      else
-			{
-			  /* +option or -option */
-#if defined _LIBC && defined USE_IN_LIBIO
-			  n = __asprintf (&buf, _("\
-%s: option `%c%s' doesn't allow an argument\n"),
-					  argv[0], argv[optind - 1][0],
-					  pfound->name);
-#else
-			  fprintf (stderr, _("\
-%s: option `%c%s' doesn't allow an argument\n"),
-				   argv[0], argv[optind - 1][0], pfound->name);
-#endif
-			}
-
-#if defined _LIBC && defined USE_IN_LIBIO
-		      if (n >= 0)
-			{
-			  if (_IO_fwide (stderr, 0) > 0)
-			    __fwprintf (stderr, L"%s", buf);
-			  else
-			    fputs (buf, stderr);
-
-			  free (buf);
-			}
-#endif
-		    }
-
-		  nextchar += strlen (nextchar);
-
-		  optopt = pfound->val;
-		  return '?';
-		}
-	    }
-	  else if (pfound->has_arg == 1)
-	    {
-	      if (optind < argc)
-		optarg = argv[optind++];
-	      else
-		{
-		  if (print_errors)
-		    {
-#if defined _LIBC && defined USE_IN_LIBIO
-		      char *buf;
-
-		      if (__asprintf (&buf, _("\
-%s: option `%s' requires an argument\n"),
-				      argv[0], argv[optind - 1]) >= 0)
-			{
-			  if (_IO_fwide (stderr, 0) > 0)
-			    __fwprintf (stderr, L"%s", buf);
-			  else
-			    fputs (buf, stderr);
-
-			  free (buf);
-			}
-#else
-		      fprintf (stderr,
-			       _("%s: option `%s' requires an argument\n"),
-			       argv[0], argv[optind - 1]);
-#endif
-		    }
-		  nextchar += strlen (nextchar);
-		  optopt = pfound->val;
-		  return optstring[0] == ':' ? ':' : '?';
-		}
-	    }
-	  nextchar += strlen (nextchar);
-	  if (longind != NULL)
-	    *longind = option_index;
-	  if (pfound->flag)
-	    {
-	      *(pfound->flag) = pfound->val;
-	      return 0;
-	    }
-	  return pfound->val;
-	}
-
-      /* Can't find it as a long option.  If this is not getopt_long_only,
-	 or the option starts with '--' or is not a valid short
-	 option, then it's an error.
-	 Otherwise interpret it as a short option.  */
-      if (!long_only || argv[optind][1] == '-'
-	  || my_index (optstring, *nextchar) == NULL)
-	{
-	  if (print_errors)
-	    {
-#if defined _LIBC && defined USE_IN_LIBIO
-	      char *buf;
-	      int n;
-#endif
-
-	      if (argv[optind][1] == '-')
-		{
-		  /* --option */
-#if defined _LIBC && defined USE_IN_LIBIO
-		  n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
-				  argv[0], nextchar);
-#else
-		  fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
-			   argv[0], nextchar);
-#endif
-		}
-	      else
-		{
-		  /* +option or -option */
-#if defined _LIBC && defined USE_IN_LIBIO
-		  n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
-				  argv[0], argv[optind][0], nextchar);
-#else
-		  fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
-			   argv[0], argv[optind][0], nextchar);
-#endif
-		}
-
-#if defined _LIBC && defined USE_IN_LIBIO
-	      if (n >= 0)
-		{
-		  if (_IO_fwide (stderr, 0) > 0)
-		    __fwprintf (stderr, L"%s", buf);
-		  else
-		    fputs (buf, stderr);
-
-		  free (buf);
-		}
-#endif
-	    }
-	  nextchar = (char *) "";
-	  optind++;
-	  optopt = 0;
-	  return '?';
-	}
-    }
-
-  /* Look at and handle the next short option-character.  */
-
-  {
-    char c = *nextchar++;
-    char *temp = my_index (optstring, c);
-
-    /* Increment `optind' when we start to process its last character.  */
-    if (*nextchar == '\0')
-      ++optind;
-
-    if (temp == NULL || c == ':')
-      {
-	if (print_errors)
-	  {
-#if defined _LIBC && defined USE_IN_LIBIO
-	      char *buf;
-	      int n;
-#endif
-
-	    if (posixly_correct)
-	      {
-		/* 1003.2 specifies the format of this message.  */
-#if defined _LIBC && defined USE_IN_LIBIO
-		n = __asprintf (&buf, _("%s: illegal option -- %c\n"),
-				argv[0], c);
-#else
-		fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
-#endif
-	      }
-	    else
-	      {
-#if defined _LIBC && defined USE_IN_LIBIO
-		n = __asprintf (&buf, _("%s: invalid option -- %c\n"),
-				argv[0], c);
-#else
-		fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
-#endif
-	      }
-
-#if defined _LIBC && defined USE_IN_LIBIO
-	    if (n >= 0)
-	      {
-		if (_IO_fwide (stderr, 0) > 0)
-		  __fwprintf (stderr, L"%s", buf);
-		else
-		  fputs (buf, stderr);
-
-		free (buf);
-	      }
-#endif
-	  }
-	optopt = c;
-	return '?';
-      }
-    /* Convenience. Treat POSIX -W foo same as long option --foo */
-    if (temp[0] == 'W' && temp[1] == ';')
-      {
-	char *nameend;
-	const struct option *p;
-	const struct option *pfound = NULL;
-	int exact = 0;
-	int ambig = 0;
-	int indfound = 0;
-	int option_index;
-
-	/* This is an option that requires an argument.  */
-	if (*nextchar != '\0')
-	  {
-	    optarg = nextchar;
-	    /* If we end this ARGV-element by taking the rest as an arg,
-	       we must advance to the next element now.  */
-	    optind++;
-	  }
-	else if (optind == argc)
-	  {
-	    if (print_errors)
-	      {
-		/* 1003.2 specifies the format of this message.  */
-#if defined _LIBC && defined USE_IN_LIBIO
-		char *buf;
-
-		if (__asprintf (&buf,
-				_("%s: option requires an argument -- %c\n"),
-				argv[0], c) >= 0)
-		  {
-		    if (_IO_fwide (stderr, 0) > 0)
-		      __fwprintf (stderr, L"%s", buf);
-		    else
-		      fputs (buf, stderr);
-
-		    free (buf);
-		  }
-#else
-		fprintf (stderr, _("%s: option requires an argument -- %c\n"),
-			 argv[0], c);
-#endif
-	      }
-	    optopt = c;
-	    if (optstring[0] == ':')
-	      c = ':';
-	    else
-	      c = '?';
-	    return c;
-	  }
-	else
-	  /* We already incremented `optind' once;
-	     increment it again when taking next ARGV-elt as argument.  */
-	  optarg = argv[optind++];
-
-	/* optarg is now the argument, see if it's in the
-	   table of longopts.  */
-
-	for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
-	  /* Do nothing.  */ ;
-
-	/* Test all long options for either exact match
-	   or abbreviated matches.  */
-	for (p = longopts, option_index = 0; p->name; p++, option_index++)
-	  if (!strncmp (p->name, nextchar, nameend - nextchar))
-	    {
-	      if ((unsigned int) (nameend - nextchar) == strlen (p->name))
-		{
-		  /* Exact match found.  */
-		  pfound = p;
-		  indfound = option_index;
-		  exact = 1;
-		  break;
-		}
-	      else if (pfound == NULL)
-		{
-		  /* First nonexact match found.  */
-		  pfound = p;
-		  indfound = option_index;
-		}
-	      else
-		/* Second or later nonexact match found.  */
-		ambig = 1;
-	    }
-	if (ambig && !exact)
-	  {
-	    if (print_errors)
-	      {
-#if defined _LIBC && defined USE_IN_LIBIO
-		char *buf;
-
-		if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
-				argv[0], argv[optind]) >= 0)
-		  {
-		    if (_IO_fwide (stderr, 0) > 0)
-		      __fwprintf (stderr, L"%s", buf);
-		    else
-		      fputs (buf, stderr);
-
-		    free (buf);
-		  }
-#else
-		fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
-			 argv[0], argv[optind]);
-#endif
-	      }
-	    nextchar += strlen (nextchar);
-	    optind++;
-	    return '?';
-	  }
-	if (pfound != NULL)
-	  {
-	    option_index = indfound;
-	    if (*nameend)
-	      {
-		/* Don't test has_arg with >, because some C compilers don't
-		   allow it to be used on enums.  */
-		if (pfound->has_arg)
-		  optarg = nameend + 1;
-		else
-		  {
-		    if (print_errors)
-		      {
-#if defined _LIBC && defined USE_IN_LIBIO
-			char *buf;
-
-			if (__asprintf (&buf, _("\
-%s: option `-W %s' doesn't allow an argument\n"),
-					argv[0], pfound->name) >= 0)
-			  {
-			    if (_IO_fwide (stderr, 0) > 0)
-			      __fwprintf (stderr, L"%s", buf);
-			    else
-			      fputs (buf, stderr);
-
-			    free (buf);
-			  }
-#else
-			fprintf (stderr, _("\
-%s: option `-W %s' doesn't allow an argument\n"),
-				 argv[0], pfound->name);
-#endif
-		      }
-
-		    nextchar += strlen (nextchar);
-		    return '?';
-		  }
-	      }
-	    else if (pfound->has_arg == 1)
-	      {
-		if (optind < argc)
-		  optarg = argv[optind++];
-		else
-		  {
-		    if (print_errors)
-		      {
-#if defined _LIBC && defined USE_IN_LIBIO
-			char *buf;
-
-			if (__asprintf (&buf, _("\
-%s: option `%s' requires an argument\n"),
-					argv[0], argv[optind - 1]) >= 0)
-			  {
-			    if (_IO_fwide (stderr, 0) > 0)
-			      __fwprintf (stderr, L"%s", buf);
-			    else
-			      fputs (buf, stderr);
-
-			    free (buf);
-			  }
-#else
-			fprintf (stderr,
-				 _("%s: option `%s' requires an argument\n"),
-				 argv[0], argv[optind - 1]);
-#endif
-		      }
-		    nextchar += strlen (nextchar);
-		    return optstring[0] == ':' ? ':' : '?';
-		  }
-	      }
-	    nextchar += strlen (nextchar);
-	    if (longind != NULL)
-	      *longind = option_index;
-	    if (pfound->flag)
-	      {
-		*(pfound->flag) = pfound->val;
-		return 0;
-	      }
-	    return pfound->val;
-	  }
-	  nextchar = NULL;
-	  return 'W';	/* Let the application handle it.   */
-      }
-    if (temp[1] == ':')
-      {
-	if (temp[2] == ':')
-	  {
-	    /* This is an option that accepts an argument optionally.  */
-	    if (*nextchar != '\0')
-	      {
-		optarg = nextchar;
-		optind++;
-	      }
-	    else
-	      optarg = NULL;
-	    nextchar = NULL;
-	  }
-	else
-	  {
-	    /* This is an option that requires an argument.  */
-	    if (*nextchar != '\0')
-	      {
-		optarg = nextchar;
-		/* If we end this ARGV-element by taking the rest as an arg,
-		   we must advance to the next element now.  */
-		optind++;
-	      }
-	    else if (optind == argc)
-	      {
-		if (print_errors)
-		  {
-		    /* 1003.2 specifies the format of this message.  */
-#if defined _LIBC && defined USE_IN_LIBIO
-		    char *buf;
-
-		    if (__asprintf (&buf, _("\
-%s: option requires an argument -- %c\n"),
-				    argv[0], c) >= 0)
-		      {
-			if (_IO_fwide (stderr, 0) > 0)
-			  __fwprintf (stderr, L"%s", buf);
-			else
-			  fputs (buf, stderr);
-
-			free (buf);
-		      }
-#else
-		    fprintf (stderr,
-			     _("%s: option requires an argument -- %c\n"),
-			     argv[0], c);
-#endif
-		  }
-		optopt = c;
-		if (optstring[0] == ':')
-		  c = ':';
-		else
-		  c = '?';
-	      }
-	    else
-	      /* We already incremented `optind' once;
-		 increment it again when taking next ARGV-elt as argument.  */
-	      optarg = argv[optind++];
-	    nextchar = NULL;
-	  }
-      }
-    return c;
-  }
-}
-
-int
-getopt (argc, argv, optstring)
-     int argc;
-     char *const *argv;
-     const char *optstring;
-{
-  return _getopt_internal (argc, argv, optstring,
-			   (const struct option *) 0,
-			   (int *) 0,
-			   0);
-}
-
-#endif	/* Not ELIDE_CODE.  */
-
-#ifdef TEST
-
-/* Compile with -DTEST to make an executable for use in testing
-   the above definition of `getopt'.  */
-
-int
-main (argc, argv)
-     int argc;
-     char **argv;
-{
-  int c;
-  int digit_optind = 0;
-
-  while (1)
-    {
-      int this_option_optind = optind ? optind : 1;
-
-      c = getopt (argc, argv, "abc:d:0123456789");
-      if (c == -1)
-	break;
-
-      switch (c)
-	{
-	case '0':
-	case '1':
-	case '2':
-	case '3':
-	case '4':
-	case '5':
-	case '6':
-	case '7':
-	case '8':
-	case '9':
-	  if (digit_optind != 0 && digit_optind != this_option_optind)
-	    printf ("digits occur in two different argv-elements.\n");
-	  digit_optind = this_option_optind;
-	  printf ("option %c\n", c);
-	  break;
-
-	case 'a':
-	  printf ("option a\n");
-	  break;
-
-	case 'b':
-	  printf ("option b\n");
-	  break;
-
-	case 'c':
-	  printf ("option c with value `%s'\n", optarg);
-	  break;
-
-	case '?':
-	  break;
-
-	default:
-	  printf ("?? getopt returned character code 0%o ??\n", c);
-	}
-    }
-
-  if (optind < argc)
-    {
-      printf ("non-option ARGV-elements: ");
-      while (optind < argc)
-	printf ("%s ", argv[optind++]);
-      printf ("\n");
-    }
-
-  exit (0);
-}
-
-#endif /* TEST */
-
diff --git a/build.vc14/getopt.h b/build.vc14/getopt.h
deleted file mode 100644
index 95084d11..00000000
--- a/build.vc14/getopt.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/* Declarations for getopt.
-   Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#ifndef _GETOPT_H
-
-#ifndef __need_getopt
-# define _GETOPT_H 1
-#endif
-
-/* If __GNU_LIBRARY__ is not already defined, either we are being used
-   standalone, or this is the first header included in the source file.
-   If we are being used with glibc, we need to include <features.h>, but
-   that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
-   not defined, include <ctype.h>, which will pull in <features.h> for us
-   if it's from glibc.  (Why ctype.h?  It's guaranteed to exist and it
-   doesn't flood the namespace with stuff the way some other headers do.)  */
-#if !defined __GNU_LIBRARY__
-# include <ctype.h>
-#endif
-
-#ifdef	__cplusplus
-extern "C" {
-#endif
-
-/* For communication from `getopt' to the caller.
-   When `getopt' finds an option that takes an argument,
-   the argument value is returned here.
-   Also, when `ordering' is RETURN_IN_ORDER,
-   each non-option ARGV-element is returned here.  */
-
-extern char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
-   This is used for communication to and from the caller
-   and for communication between successive calls to `getopt'.
-
-   On entry to `getopt', zero means this is the first call; initialize.
-
-   When `getopt' returns -1, this is the index of the first of the
-   non-option elements that the caller should itself scan.
-
-   Otherwise, `optind' communicates from one call to the next
-   how much of ARGV has been scanned so far.  */
-
-extern int optind;
-
-/* Callers store zero here to inhibit the error message `getopt' prints
-   for unrecognized options.  */
-
-extern int opterr;
-
-/* Set to an option character which was unrecognized.  */
-
-extern int optopt;
-
-#ifndef __need_getopt
-/* Describe the long-named options requested by the application.
-   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
-   of `struct option' terminated by an element containing a name which is
-   zero.
-
-   The field `has_arg' is:
-   no_argument		(or 0) if the option does not take an argument,
-   required_argument	(or 1) if the option requires an argument,
-   optional_argument 	(or 2) if the option takes an optional argument.
-
-   If the field `flag' is not NULL, it points to a variable that is set
-   to the value given in the field `val' when the option is found, but
-   left unchanged if the option is not found.
-
-   To have a long-named option do something other than set an `int' to
-   a compiled-in constant, such as set a value from `optarg', set the
-   option's `flag' field to zero and its `val' field to a nonzero
-   value (the equivalent single-letter option character, if there is
-   one).  For long options that have a zero `flag' field, `getopt'
-   returns the contents of the `val' field.  */
-
-struct option
-{
-# if (defined __STDC__ && __STDC__) || defined __cplusplus
-  const char *name;
-# else
-  char *name;
-# endif
-  /* has_arg can't be an enum because some compilers complain about
-     type mismatches in all the code that assumes it is an int.  */
-  int has_arg;
-  int *flag;
-  int val;
-};
-
-/* Names for the values of the `has_arg' field of `struct option'.  */
-
-# define no_argument		0
-# define required_argument	1
-# define optional_argument	2
-#endif	/* need getopt */
-
-
-/* Get definitions and prototypes for functions to process the
-   arguments in ARGV (ARGC of them, minus the program name) for
-   options given in OPTS.
-
-   Return the option character from OPTS just read.  Return -1 when
-   there are no more options.  For unrecognized options, or options
-   missing arguments, `optopt' is set to the option letter, and '?' is
-   returned.
-
-   The OPTS string is a list of characters which are recognized option
-   letters, optionally followed by colons, specifying that that letter
-   takes an argument, to be placed in `optarg'.
-
-   If a letter in OPTS is followed by two colons, its argument is
-   optional.  This behavior is specific to the GNU `getopt'.
-
-   The argument `--' causes premature termination of argument
-   scanning, explicitly telling `getopt' that there are no more
-   options.
-
-   If OPTS begins with `--', then non-option arguments are treated as
-   arguments to the option '\0'.  This behavior is specific to the GNU
-   `getopt'.  */
-
-#if (defined __STDC__ && __STDC__) || defined __cplusplus
-# ifdef __GNU_LIBRARY__
-/* Many other libraries have conflicting prototypes for getopt, with
-   differences in the consts, in stdlib.h.  To avoid compilation
-   errors, only prototype getopt for the GNU C library.  */
-extern int getopt (int ___argc, char *const *___argv, const char *__shortopts);
-# else /* not __GNU_LIBRARY__ */
-extern int getopt ();
-# endif /* __GNU_LIBRARY__ */
-
-# ifndef __need_getopt
-extern int getopt_long (int ___argc, char *const *___argv,
-			const char *__shortopts,
-		        const struct option *__longopts, int *__longind);
-extern int getopt_long_only (int ___argc, char *const *___argv,
-			     const char *__shortopts,
-		             const struct option *__longopts, int *__longind);
-
-/* Internal only.  Users should not call this directly.  */
-extern int _getopt_internal (int ___argc, char *const *___argv,
-			     const char *__shortopts,
-		             const struct option *__longopts, int *__longind,
-			     int __long_only);
-# endif
-#else /* not __STDC__ */
-extern int getopt ();
-# ifndef __need_getopt
-extern int getopt_long ();
-extern int getopt_long_only ();
-
-extern int _getopt_internal ();
-# endif
-#endif /* __STDC__ */
-
-#ifdef	__cplusplus
-}
-#endif
-
-/* Make sure we later can get all the definitions and declarations.  */
-#undef __need_getopt
-
-#endif /* getopt.h */
-
diff --git a/build.vc14/getrusage.c b/build.vc14/getrusage.c
deleted file mode 100644
index deea4b13..00000000
--- a/build.vc14/getrusage.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*  This file is part of the MPIR Library.
-
-    The MPIR Library is free software; you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published
-    by the Free Software Foundation; either version 2.1 of the License, or (at
-    your option) any later version.
-    The MPIR Library is distributed in the hope that it will be useful, but
-    WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-    License for more details.
-    You should have received a copy of the GNU Lesser General Public License
-    along with the MPIR Library; see the file COPYING.LIB.  If not, write
-    to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-    Boston, MA 02110-1301, USA.
-*/
-
-#define WIN32_LEAN_AND_MEAN
-
-#include <windows.h>
-#include <psapi.h>
-#include <errno.h>
-
-#include "getrusage.h"
-
-typedef union file_t
-{   FILETIME ft;
-    long long lt;
-} file_t;
-
-int getrusage(int who, rusage *usage)
-{
-    HANDLE proc_hand;
-    file_t c_time, x_time, s_time, u_time;
-    int cb = 0, err = -1;
-
-    if(who != RUSAGE_SELF) 
-    {
-        errno = (who == RUSAGE_CHILDREN ? ENODATA : EINVAL); 
-        return err;
-    }
-
-    proc_hand = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, GetCurrentProcessId());
-
-    if(GetProcessTimes(proc_hand, &(c_time.ft), &(x_time.ft), &(s_time.ft), &(u_time.ft))) 
-    {
-        PROCESS_MEMORY_COUNTERS ctrs;
-        
-        /* The units returned by GetProcessTimes are 100 nanoseconds */
-        u_time.lt = (u_time.lt + 5) / 10;
-        s_time.lt = (s_time.lt + 5) / 10;
-
-        usage->ru_utime.tv_sec  = (long)(u_time.lt / 1000000ll);
-        usage->ru_stime.tv_sec  = (long)(s_time.lt / 1000000ll);
-        usage->ru_utime.tv_usec = (long)(u_time.lt % 1000000ll);
-        usage->ru_stime.tv_usec = (long)(s_time.lt % 1000000ll);
-
-        if(GetProcessMemoryInfo(proc_hand, &ctrs, sizeof(ctrs))) 
-        {
-            PERFORMANCE_INFORMATION perf_info;
-            GetPerformanceInfo(&perf_info, sizeof(perf_info));
-            usage->ru_maxrss = (DWORD) (ctrs.WorkingSetSize / perf_info.PageSize);
-            usage->ru_majflt = ctrs.PageFaultCount;
-            err = 0;
-        }
-    }
-
-    if(err)
-        errno = EACCES;
-    CloseHandle(proc_hand);
-    return err;
-}
diff --git a/build.vc14/getrusage.h b/build.vc14/getrusage.h
deleted file mode 100644
index f449c434..00000000
--- a/build.vc14/getrusage.h
+++ /dev/null
@@ -1,46 +0,0 @@
-
-#ifndef _GETRUSAGE_H
-#define _GETRUSAGE_H
-
-#if defined(__cplusplus)
-extern "C"
-{
-#endif
-
-#define ENODATA         61
-#define	RUSAGE_SELF	     0
-#define	RUSAGE_CHILDREN	-1
-
-typedef struct
-{
-    long            tv_sec;
-    long            tv_usec;
-} tval;
-
-typedef struct rusage
-{
-    tval  ru_utime;   /* user time used                      */
-    tval  ru_stime;   /* system time used                    */
-    long     ru_maxrss;  /* integral max resident set size      */
-    long     ru_ixrss;   /* integral shared text memory size    */
-    long     ru_idrss;   /* integral unshared data size         */
-    long     ru_isrss;   /* integral unshared stack size        */
-    long     ru_minflt;  /* page reclaims                       */
-    long     ru_majflt;  /* page faults                         */
-    long     ru_nswap;   /* swaps                               */
-    long     ru_inblock; /* block input operations              */
-    long     ru_oublock; /* block output operations             */
-    long     ru_msgsnd;  /* messages sent                       */
-    long     ru_msgrcv;  /* messages received                   */
-    long     ru_nsignals;/* signals received                    */
-    long     ru_nvcsw;   /* voluntary context switches          */
-    long     ru_nivcsw;  /* involuntary context switches        */
-} rusage;
-
-int getrusage(int who, rusage *usage);
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif
diff --git a/build.vc14/gettimeofday.c b/build.vc14/gettimeofday.c
deleted file mode 100644
index d576e24e..00000000
--- a/build.vc14/gettimeofday.c
+++ /dev/null
@@ -1,39 +0,0 @@
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include <time.h>
-
-#include "gettimeofday.h"
-
-int gettimeofday(struct timeval *tv, struct timezone *tz)
-{
-    FILETIME        ft;
-    LARGE_INTEGER   li;
-    __int64         t;
-    static int      tzflag;
-
-    if(tv)
-    {
-        GetSystemTimeAsFileTime(&ft);
-        li.LowPart  = ft.dwLowDateTime;
-        li.HighPart = ft.dwHighDateTime;
-        t  = li.QuadPart; 
-        t -= EPOCHFILETIME;
-        t /= 10;
-        tv->tv_sec  = (long)(t / 1000000);
-        tv->tv_usec = (long)(t % 1000000);
-    }
-
-    if (tz)
-    {
-        if (!tzflag)
-        {
-            _tzset();
-            tzflag++;
-        }
-        tz->tz_minuteswest = _timezone / 60;
-        tz->tz_dsttime = _daylight;
-    }
-
-    return 0;
-}
diff --git a/build.vc14/gettimeofday.h b/build.vc14/gettimeofday.h
deleted file mode 100644
index 1c9dde98..00000000
--- a/build.vc14/gettimeofday.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * timeval.h    1.0 01/12/19
- *
- * Defines gettimeofday, timeval, etc. for Win32
- *
- * By Wu Yongwei
- *
- */
-#ifndef _TIMEVAL_H
-#define _TIMEVAL_H
-
-#include <winsock2.h>
-
-#define EPOCHFILETIME (116444736000000000LL)
-
-#if defined(__cplusplus)
-extern "C"
-{
-#endif
-
-struct timezone 
-{
-    int tz_minuteswest; /* minutes W of Greenwich */
-    int tz_dsttime;     /* type of dst correction */
-};
-
-int gettimeofday(struct timeval *tv, struct timezone *tz);
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* _TIMEVAL_H */
-
diff --git a/build.vc14/libecm/Makefile.am b/build.vc14/libecm/Makefile.am
deleted file mode 100644
index 50bc2a0a..00000000
--- a/build.vc14/libecm/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = libecm.vcxproj libecm.vcxproj.filters
diff --git a/build.vc14/libecm/libecm.vcxproj b/build.vc14/libecm/libecm.vcxproj
deleted file mode 100644
index eb7fb97e..00000000
--- a/build.vc14/libecm/libecm.vcxproj
+++ /dev/null
@@ -1,245 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{CD555681-D65B-4173-A29C-B8BF06A4871B}</ProjectGuid>
-    <RootNamespace>libecm</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfAtl>Static</UseOfAtl>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="..\vsyasm.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <PreBuildEvent>
-      <Command>..\prebuild NO_GPU</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;SSE2;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <PreBuildEvent>
-      <Command>..\prebuild NO_GPU</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;NDEBUG;_LIB;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-    <Lib />
-    <YASM>
-      <Defines>_WIN64</Defines>
-    </YASM>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <PreBuildEvent>
-      <Command>..\prebuild NO_GPU</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;SSE2;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <PreBuildEvent>
-      <Command>..\prebuild NO_GPU</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;_DEBUG;_LIB;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-    <Lib />
-    <YASM>
-      <Defines>_WIN64</Defines>
-    </YASM>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm" />
-    <YASM Include="..\assembler\redc.asm" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\addlaws.c" />
-    <ClCompile Include="..\..\aprtcle\mpz_aprcl.c" />
-    <ClCompile Include="..\..\auxarith.c" />
-    <ClCompile Include="..\..\auxlib.c" />
-    <ClCompile Include="..\..\batch.c" />
-    <ClCompile Include="..\..\bestd.c" />
-    <ClCompile Include="..\..\cudawrapper.c" />
-    <ClCompile Include="..\..\ecm.c" />
-    <ClCompile Include="..\..\ecm2.c" />
-    <ClCompile Include="..\..\ecm_ntt.c" />
-    <ClCompile Include="..\..\factor.c" />
-    <ClCompile Include="..\..\getprime_r.c" />
-    <ClCompile Include="..\..\ks-multiply.c" />
-    <ClCompile Include="..\..\listz.c" />
-    <ClCompile Include="..\..\listz_handle.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\..\lucas.c" />
-    <ClCompile Include="..\..\median.c" />
-    <ClCompile Include="..\..\mpmod.c" />
-    <ClCompile Include="..\..\mpzspm.c" />
-    <ClCompile Include="..\..\mpzspv.c" />
-    <ClCompile Include="..\..\mul_lo.c" />
-    <ClCompile Include="..\..\ntt_gfp.c" />
-    <ClCompile Include="..\..\parametrizations.c" />
-    <ClCompile Include="..\..\pm1.c" />
-    <ClCompile Include="..\..\pm1fs2.c" />
-    <ClCompile Include="..\..\polyeval.c" />
-    <ClCompile Include="..\..\pp1.c" />
-    <ClCompile Include="..\..\random.c" />
-    <ClCompile Include="..\..\rho.c" />
-    <ClCompile Include="..\..\schoen_strass.c" />
-    <ClCompile Include="..\..\sets_long.c" />
-    <ClCompile Include="..\..\sp.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\spm.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\spv.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\stage2.c" />
-    <ClCompile Include="..\..\torsions.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-    <ClInclude Include="..\..\addlaws.h" />
-    <ClInclude Include="..\..\aprtcle\jacobi_sum.h" />
-    <ClInclude Include="..\..\aprtcle\mpz_aprcl.h" />
-    <ClInclude Include="..\..\champions.h" />
-    <ClInclude Include="..\..\config.h" />
-    <ClInclude Include="..\..\ecm-ecm.h" />
-    <ClInclude Include="..\..\ecm-gmp.h" />
-    <ClInclude Include="..\..\ecm-gpu.h" />
-    <ClInclude Include="..\..\ecm-impl.h" />
-    <ClInclude Include="..\..\ecm-params.h" />
-    <ClInclude Include="..\..\ecm.h" />
-    <ClInclude Include="..\..\getprime_r.h" />
-    <ClInclude Include="..\..\listz_handle.h" />
-    <ClInclude Include="..\..\longlong.h" />
-    <ClInclude Include="..\..\mpmod.h" />
-    <ClInclude Include="..\..\sp.h" />
-    <ClInclude Include="..\..\torsions.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="..\vsyasm.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/libecm/libecm.vcxproj.filters b/build.vc14/libecm/libecm.vcxproj.filters
deleted file mode 100644
index 12c4727d..00000000
--- a/build.vc14/libecm/libecm.vcxproj.filters
+++ /dev/null
@@ -1,190 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Source Files\Assembler">
-      <UniqueIdentifier>{2f18179f-5dba-420c-8dc7-bc7f8228a1b2}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm">
-      <Filter>Source Files\Assembler</Filter>
-    </YASM>
-    <YASM Include="..\assembler\redc.asm">
-      <Filter>Source Files\Assembler</Filter>
-    </YASM>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxarith.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\auxlib.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\bestd.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm_ntt.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\factor.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ks-multiply.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\listz.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\lucas.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\median.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpmod.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mul_lo.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ntt_gfp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pm1.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pm1fs2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\polyeval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pp1.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\random.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\rho.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\schoen_strass.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\sets_long.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\sp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\stage2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\batch.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\parametrizations.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\cudawrapper.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\addlaws.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\listz_handle.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\torsions.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\aprtcle\mpz_aprcl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\getprime_r.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\sp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\champions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gpu.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\addlaws.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\listz_handle.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\torsions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\aprtcle\jacobi_sum.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\aprtcle\mpz_aprcl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\getprime_r.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\mpmod.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/libecm_gpu/Makefile.am b/build.vc14/libecm_gpu/Makefile.am
deleted file mode 100644
index 3885d988..00000000
--- a/build.vc14/libecm_gpu/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = libecm_gpu.vcxproj libecm_gpu.vcxproj.filters
diff --git a/build.vc14/libecm_gpu/libecm_gpu.vcxproj b/build.vc14/libecm_gpu/libecm_gpu.vcxproj
deleted file mode 100644
index e7f1991c..00000000
--- a/build.vc14/libecm_gpu/libecm_gpu.vcxproj
+++ /dev/null
@@ -1,315 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}</ProjectGuid>
-    <RootNamespace>libecm_gpu</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfAtl>Static</UseOfAtl>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="..\vsyasm.props" />
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 9.0.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ecmlib</TargetName>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <PreBuildEvent>
-      <Command>..\prebuild GPU</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC50;NDEBUG;_LIB;SSE2;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <Optimization>Full</Optimization>
-    </ClCompile>
-    <Lib />
-    <CudaCompile>
-      <CodeGeneration>compute_50,sm_50</CodeGeneration>
-    </CudaCompile>
-    <CudaCompile>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <TargetMachinePlatform>32</TargetMachinePlatform>
-    </CudaCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-    </ProjectReference>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <PreBuildEvent>
-      <Command>..\prebuild GPU</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC50;_WIN64;NDEBUG;_LIB;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-    <Lib />
-    <YASM>
-      <Defines>_WIN64</Defines>
-    </YASM>
-    <CudaCompile>
-      <CodeGeneration>compute_50,sm_50</CodeGeneration>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <TargetMachinePlatform>64</TargetMachinePlatform>
-    </CudaCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-    </ProjectReference>
-    <Lib>
-      <AdditionalDependencies>
-      </AdditionalDependencies>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <PreBuildEvent>
-      <Command>..\prebuild GPU</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC50;_DEBUG;_LIB;SSE2;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-    <CudaCompile>
-      <CodeGeneration>compute_50,sm_50</CodeGeneration>
-    </CudaCompile>
-    <CudaCompile>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <TargetMachinePlatform>32</TargetMachinePlatform>
-    </CudaCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-    </ProjectReference>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <PreBuildEvent>
-      <Command>..\prebuild GPU</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC50;_WIN64;_DEBUG;_LIB;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-    <Lib />
-    <YASM>
-      <Defines>_WIN64</Defines>
-    </YASM>
-    <CudaCompile>
-      <CodeGeneration>compute_50,sm_50</CodeGeneration>
-    </CudaCompile>
-    <CudaCompile>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <TargetMachinePlatform>64</TargetMachinePlatform>
-    </CudaCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-    </ProjectReference>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\addlaws.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\..\aprtcle\mpz_aprcl.c" />
-    <ClCompile Include="..\..\auxarith.c" />
-    <ClCompile Include="..\..\auxlib.c" />
-    <ClCompile Include="..\..\batch.c" />
-    <ClCompile Include="..\..\bestd.c" />
-    <ClCompile Include="..\..\cudawrapper.c" />
-    <ClCompile Include="..\..\ecm.c" />
-    <ClCompile Include="..\..\ecm2.c" />
-    <ClCompile Include="..\..\ecm_ntt.c" />
-    <ClCompile Include="..\..\factor.c" />
-    <ClCompile Include="..\..\getprime_r.c" />
-    <ClCompile Include="..\..\ks-multiply.c" />
-    <ClCompile Include="..\..\listz.c" />
-    <ClCompile Include="..\..\listz_handle.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\..\lucas.c" />
-    <ClCompile Include="..\..\median.c" />
-    <ClCompile Include="..\..\mpmod.c" />
-    <ClCompile Include="..\..\mpzspm.c" />
-    <ClCompile Include="..\..\mpzspv.c" />
-    <ClCompile Include="..\..\mul_lo.c" />
-    <ClCompile Include="..\..\ntt_gfp.c" />
-    <ClCompile Include="..\..\parametrizations.c" />
-    <ClCompile Include="..\..\pm1.c" />
-    <ClCompile Include="..\..\pm1fs2.c" />
-    <ClCompile Include="..\..\polyeval.c" />
-    <ClCompile Include="..\..\pp1.c" />
-    <ClCompile Include="..\..\random.c" />
-    <ClCompile Include="..\..\rho.c" />
-    <ClCompile Include="..\..\schoen_strass.c" />
-    <ClCompile Include="..\..\sets_long.c" />
-    <ClCompile Include="..\..\sp.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\spm.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\spv.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\stage2.c" />
-    <ClCompile Include="..\..\torsions.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-    <ClInclude Include="..\..\addlaws.h" />
-    <ClInclude Include="..\..\aprtcle\jacobi_sum.h" />
-    <ClInclude Include="..\..\aprtcle\mpz_aprcl.h" />
-    <ClInclude Include="..\..\champions.h" />
-    <ClInclude Include="..\..\config.h" />
-    <ClInclude Include="..\..\cudakernel.h" />
-    <ClInclude Include="..\..\ecm-ecm.h" />
-    <ClInclude Include="..\..\ecm-gmp.h" />
-    <ClInclude Include="..\..\ecm-gpu.h" />
-    <ClInclude Include="..\..\ecm-impl.h" />
-    <ClInclude Include="..\..\ecm-params.h" />
-    <ClInclude Include="..\..\ecm.h" />
-    <ClInclude Include="..\..\getprime_r.h" />
-    <ClInclude Include="..\..\listz_handle.h" />
-    <ClInclude Include="..\..\longlong.h" />
-    <ClInclude Include="..\..\sp.h" />
-    <ClInclude Include="..\..\torsions.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <CudaCompile Include="..\..\cudakernel.cu">
-      <FileType>Document</FileType>
-    </CudaCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm" />
-    <YASM Include="..\assembler\redc.asm" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="..\vsyasm.targets" />
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 9.0.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/libecm_gpu/libecm_gpu.vcxproj.filters b/build.vc14/libecm_gpu/libecm_gpu.vcxproj.filters
deleted file mode 100644
index cdf9b862..00000000
--- a/build.vc14/libecm_gpu/libecm_gpu.vcxproj.filters
+++ /dev/null
@@ -1,193 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <ClCompile Include="..\..\mpmod.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\addlaws.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\auxarith.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\auxlib.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\batch.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\bestd.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\cudawrapper.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm_ntt.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\factor.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ks-multiply.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\listz.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\listz_handle.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\lucas.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\median.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\aprtcle\mpz_aprcl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mul_lo.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ntt_gfp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\parametrizations.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pm1.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pm1fs2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\polyeval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pp1.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\random.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\rho.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\schoen_strass.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\sets_long.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\sp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\stage2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\torsions.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\getprime_r.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gpu.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\aprtcle\jacobi_sum.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\listz_handle.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\addlaws.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\champions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\aprtcle\mpz_aprcl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\sp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\torsions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\getprime_r.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\cudakernel.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{dfe792df-b4ff-4147-be95-190117baae33}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{0315d9d5-3f8f-456a-ae54-e00de69b9350}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Source Files\Assembler">
-      <UniqueIdentifier>{cbe6b893-95dc-4f4b-b2e9-73245cf57c75}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <CudaCompile Include="..\..\cudakernel.cu">
-      <Filter>Source Files</Filter>
-    </CudaCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm">
-      <Filter>Source Files\Assembler</Filter>
-    </YASM>
-    <YASM Include="..\assembler\redc.asm">
-      <Filter>Source Files\Assembler</Filter>
-    </YASM>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/mp_lib.props b/build.vc14/mp_lib.props
deleted file mode 100644
index 54785956..00000000
--- a/build.vc14/mp_lib.props
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="UserMacros">
-    <mp_dir>mpir\</mp_dir>
-    <mp_lib>mpir.lib</mp_lib>
-  </PropertyGroup>
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-  </PropertyGroup>
-  <ItemGroup>
-    <BuildMacro Include="mp_dir">
-      <Value>$(mp_dir)</Value>
-      <EnvironmentVariable>true</EnvironmentVariable>
-    </BuildMacro>
-    <BuildMacro Include="mp_lib">
-      <Value>$(mp_lib)</Value>
-      <EnvironmentVariable>true</EnvironmentVariable>
-    </BuildMacro>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/multiecm/Makefile.am b/build.vc14/multiecm/Makefile.am
deleted file mode 100644
index 1a31b47b..00000000
--- a/build.vc14/multiecm/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = multiecm.vcxproj multiecm.vcxproj.filters
diff --git a/build.vc14/multiecm/multiecm.vcxproj b/build.vc14/multiecm/multiecm.vcxproj
deleted file mode 100644
index 360b97c1..00000000
--- a/build.vc14/multiecm/multiecm.vcxproj
+++ /dev/null
@@ -1,238 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <RootNamespace>multiecm</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-    <ProjectGuid>{16434DC2-371C-451B-A336-820499B98B8C}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v110</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="..\vsyasm.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;NDEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;..\..\..\$(mp_dir)lib\$(Platform)\release\$(mp_lib);%(AdditionalDependencies)</AdditionalDependencies>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <StackReserveSize>8388608</StackReserveSize>
-      <StackCommitSize>65536</StackCommitSize>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;_DEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <StackReserveSize>8388608</StackReserveSize>
-      <StackCommitSize>65536</StackCommitSize>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxi.c" />
-    <ClCompile Include="..\..\b1_ainc.c" />
-    <ClCompile Include="..\..\candi.c" />
-    <ClCompile Include="..\..\eval.c" />
-    <ClCompile Include="..\..\getprime_r.c" />
-    <ClCompile Include="..\..\multiecm.c" />
-    <ClCompile Include="..\..\random.c" />
-    <ClCompile Include="..\..\resume.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-    <ClInclude Include="..\..\champions.h" />
-    <ClInclude Include="..\..\ecm-ecm.h" />
-    <ClInclude Include="..\..\ecm-gmp.h" />
-    <ClInclude Include="..\..\ecm-impl.h" />
-    <ClInclude Include="..\..\ecm-params.h" />
-    <ClInclude Include="..\..\ecm.h" />
-    <ClInclude Include="..\..\getprime_r.h" />
-    <ClInclude Include="..\..\longlong.h" />
-    <ClInclude Include="..\config.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libecm\libecm.vcxproj">
-      <Project>{cd555681-d65b-4173-a29c-b8bf06a4871b}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="..\vsyasm.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/multiecm/multiecm.vcxproj.filters b/build.vc14/multiecm/multiecm.vcxproj.filters
deleted file mode 100644
index a22bf49d..00000000
--- a/build.vc14/multiecm/multiecm.vcxproj.filters
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\b1_ainc.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\candi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\eval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\random.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\resume.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\getprime_r.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\multiecm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\champions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\getprime_r.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/out_copy_rename.bat b/build.vc14/out_copy_rename.bat
deleted file mode 100644
index 5fe442ed..00000000
--- a/build.vc14/out_copy_rename.bat
+++ /dev/null
@@ -1,31 +0,0 @@
-@echo off
-if not exist %1 goto nofile
-if exist %2 goto next
-
-echo creating directory %2
-md %2 > nul
-
-:next
-rem strip quotes if present
-set str=%2
-for /f "useback tokens=*" %%a in ('%str%') do set str=%%~a
-
-rem add a backslash if the output directory lacks one
-set str=%str:~-1%
-if "%str%" == "\" (set outf=%2%3) else (set outf=%2\%3)
-
-echo copying %1 to %outf% (if not present or changed)
-if not exist "%outf%" goto copy
-
-rem don't overwrite if output exists and is not changed
-fc %1 %outf% > nul && if not %errorlevel 1 goto exit
-echo overwriting %outf% with %1
-
-:copy
-copy %1 %outf% > nul
-goto exit
-
-:nofile
-echo %1 not found
-
-:exit
diff --git a/build.vc14/prebuild.bat b/build.vc14/prebuild.bat
deleted file mode 100644
index bbc16852..00000000
--- a/build.vc14/prebuild.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-cd ..\
-call out_copy_rename config.h ..\ config.h
-call gen_ecm_h
diff --git a/build.vc14/python.bat b/build.vc14/python.bat
deleted file mode 100644
index 77b1e718..00000000
--- a/build.vc14/python.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-@echo off
-"c:\program files\python34\python" %1
diff --git a/build.vc14/readme.txt b/build.vc14/readme.txt
deleted file mode 100644
index c7f20184..00000000
--- a/build.vc14/readme.txt
+++ /dev/null
@@ -1,173 +0,0 @@
-
-Building GMP-ECM with Microsoft Visual C++ 2015 
-===============================================
-
-If you wish to build the assembler code support you will need to 
-install the YASM assembler that is available at:
-
-  http://www.tortall.net/projects/yasm/
-
-THe version you need is vsyasm, which should be put it in the same
-directory as your Visual C++ compiler, which is typically:
-
-  C:\Program Files\yasm
-
-The Multi-Precision Library - GMP and MPIR
-==========================================
-
-GMP-ECM works with either GMP or MPIR, a fork of GMP. To build and run
-GMP-ECM using Visual Studio you first need to obtain and build either 
-GMP or MPIR.   MPIR has a fully integrated Visual Studio build system
-for Windows but GMP does not.  
-
-The VC++ build of GMP-ECM now defaults to MPIR but the property sheet 
-mp_lib.vsprops can be edited to set the macro mp_lib to 'gmp' instead 
-of 'mpir' to build ECM using GMP.
-
-GMP
-===
-
-GMP can be built from the GMP source code available here:
-
-  http://gmplib.org/
-  
-GMP can be built with mingw for 32-bit Windows and mingw64 for Windows x64.
-It is reported that the resulting libraries work with Visual Studio when
-appropriately renamed. 
-
-MPIR
-====
-
-MPIR is available here:
-
-  http://www.mpir.org
-  
-It has full support for building MPIR for 32 and 64 bit Windows systems 
-with x86 assembler support using the YASM assembler.  
-
-Building GMP-ECM
-================
-
-The build files for GMP-ECM assume that the GMP and ECM build directories
-are in a common parent directory as follows:
-
-  Parent Directory
-    MPIR (or GMP)
-      build.vc14    -- MPIR (or GMP) build files
-      ...
-    GMP-ECM
-      buid.vc14     -- ECM build files 
-      
-The root directories for GMP and GMP-ECM are assumed to have these names
-irrespective of which version is being used (they used to be followed by 
-version numbers but this meant that the build projects had to be updated
-too frequently). 
-
-The normal (non GPU) build is opened by loading the file ecm.sln (from 
-the build.vc14 directory) into Visual Studio. This provides these build
-projects in build.vc14 for the non GPU build:
-
-    ecm           - the ECM application 
-    ecmlib        - the ECM library
-    tune          - a program for tuning 
-    bench_mulredc - for benchmarking mulredc 
-    multiecm      - work in progress (not working)
-
-The GPU build is opened by loading the file ecm.sln (from  the build.vc14
-directory) into Visual Studio. This provides two build projects in 
-build.vc14:
-
-    ecm_gpu     - the ECM application 
-    ecmlib_gpu  - the ECM library
-
-In all cases you have to choose either a win32 or x64 build and either a
-Release or Debug configuration.  
-
-The non GPU Build
------------------
-
-Before starting a build, there are a number of configuration options
-that need to be set:
-
-1. If you wish to compile GMP-ECM for use on a particular processor,
-   select the appropriate define from the file 'ecm-params.h' in the
-   GMP-ECM root directory and decide which of the defines suit your
-   needs (e.g. __tune_corei7__).  Then replace the existing define:
-   
-   /* define Windows tuning here */
-   #  define __tune_corei7__
- 
-   towards the end of the file config.h file in the 'build.vc14'
-   directory (build.vc14\config.h) with the chosen define.
-
-2. The file at 'build.vc14\mul_fft-params.h' allows the FFT code to
-   be tuned to 32 or 64-bit systems by selecting an option by 
-   changing the appropriate '#elif 0' to #elif 1'.   If you wish to 
-   use the win32 AMD assembler files, you also have to use the 
-   Visual Studio property page to define AMD_ASM (alternatively
-   you can edit the two files mulredc.asm and redc.asm in the 
-   build.vc14\assembler\ directory to include the AMD assembler).
-
-The GPU Build
--------------
-
-1. If you wish to build with a GPU capability you will need to 
-   install Nvidia Nsight for Visual Studio and the CUDA Toolkit
-   v8.0.  You then build the libecm_gpu and ecm_gpu projects
-   
-2. The choices above for the non GPU build aslo apply when
-   building for a GPU based system. 
-   
-   By default, the GPU  configuration is "compute_50,sm_50". If
-   you need to change this, select libecm_gpu and ecm_gpu and 
-   set the propertiesfor "CUDA C/C++|Device|Code Generation" for
-   your GPU capability. 
-   
-   Also under "C/C++|Preprocessor|Preprocessor Definitions" for 
-   both these projects, change the current definition GPU_CC50 to 
-   that for your GPU capability
-
-Build Configurations
---------------------
-
-When a version of ecm and ecmlib are built, the library and the application
-are put in the directory matching the configuration that has been built:
-
-    GMP-ECM
-      build.vc14    -- ECM build files 
-      lib           -- ECM static library files
-      bin           -- ECM executable files
-      
-within these lib, dll and bin directories, the outputs are located in
-sub-directories determined by the platform and configuration:
- 
-   win32\release
-   win32\debug
-   x64\release
-   x64\debug
-
-If you don't want assembler support you need to change the define:      
-
-#define NATIVE_REDC   1         
-
-in config.h (in the build.vc14 subdirectory) to: 
-
-#undef NATIVE_REDC
-
-Tune
-====
-
-If tune is compiled and run for a particular configuration it will output
-suitable values for optimising GMP-ECM to the console window.  To optimise
-GMP-ECM these values should be put in a suitably named file whcih then has
-to be integrated in ecm-params.h.
-
-Tests
-=====
-
-The file test.py is a python script that runs the ECM tests. It runs the
-x64/release-amd (non GPU) version by default but can be edited to test other
-builds.  It cannot run some tests as a result of the diifficulty in the
-conversion of the Unix shell scripts for the tests for use on Windows. 
-
-    Brian Gladman, November 2017
diff --git a/build.vc14/tests.py b/build.vc14/tests.py
deleted file mode 100644
index 1a1a6a30..00000000
--- a/build.vc14/tests.py
+++ /dev/null
@@ -1,150 +0,0 @@
-
-from __future__ import print_function
-import os
-import sys
-import string
-import platform
-from re import match
-from subprocess import Popen, PIPE, STDOUT
-from tempfile import *
-
-try:
-  from time import perf_counter as timer
-except ImportError:
-  from time import clock as timer
-  
-
-x64 = True
-debug = False
-test_gpu_version = True
-run_non_gpu_tests = True
-run_gpu_tests = True
-
-class Timer() :
-  def __enter__(self): self.start = timer()
-  def __exit__(self, *args): print(' time {:.3f} milliseconds'.format(1000 * (timer() - self.start)))
-
-cpath = os.path.dirname(__file__)
-config = 'x64' if x64 else 'Win32'
-mode = 'Debug' if debug else 'Release'
-test_dir = '..\\bin\\{:s}\\{:s}\\'.format(config, mode)
-
-def get_tests(filename):
-  print('running tests in {:s}'.format(filename))
-  start, sub, tests, c_tests = True, dict(), [], []
-  with open(os.path.join(cpath, filename)) as f:
-    lines = f.readlines()
-    cnt, lnth = 0, len(lines)
-    while cnt < lnth:
-      try:
-        line = lines[cnt].strip()
-        cnt += 1
-        tkns = line.split()
-        if line.startswith('echo') and len(tkns) > 2 and tkns[2] == '|':
-          while cnt < lnth and 'checkcode' not in line:
-            while cnt < lnth and not lines[cnt]:
-              cnt += 1
-            if cnt < lnth:
-              line += '|' + lines[cnt]
-              cnt += 1
-          start = False
-        elif start:
-          sp = line.split('="')
-          if len(sp) == 2:
-            if sp[1].startswith('${1:-./ecm}'):
-              sub[sp[0]] = sp[1][12:-1]
-            else:
-              sub[sp[0]] = sp[1][:-1]
-          continue
-        else:
-          continue
-        line = line.replace(';', '|')
-        sub_tests = []
-        for line_part in line.split('|'):
-          tkns = line_part.strip().split()
-          cmd =  []
-          for tok in tkns:
-            if tok.startswith('"') and tok.endswith('"'):
-              tok = tok[1:-1]
-            if tok[0] == '$' and tok[1:] in sub:
-              tok = tok.replace(tok, sub[tok[1:]])
-            elif tok == './ecm':
-              tok = ''
-            cmd += [tok]
-          cseq = []
-          if cmd and cmd[0] == 'echo':
-            cseq += [cmd[1]]
-            cmd = cmd[2:]
-          if len(cmd) >= 3 and cmd[-3] == 'checkcode' and cmd[-2] == '$?':
-            cseq += [int(cmd[-1])]
-            cmd = cmd[:-3]
-          cmd = (' '.join(cmd)).strip()
-          if cmd:
-            cseq += [cmd]
-          sub_tests += [cseq]
-        if len(sub_tests) == 3 and all(len(x) == 1 for x in sub_tests):
-          tests += [tuple(x[0] for x in sub_tests)]
-        else:
-          c_tests += [sub_tests]
-      except ValueError:
-        print('parsing error on line {} in text "{}"'.format(cnt, line))
-  return tests, c_tests
-
-def run_exe(exe, args, inp) :
-  al = {'stdin' : PIPE, 'stdout' : PIPE, 'stderr' : STDOUT }
-  if sys.platform.startswith('win'):
-    al['creationflags'] = 0x08000000
-  p = Popen([os.path.join(cpath, exe)] + args.split(' '), **al)
-  res = p.communicate(inp.encode())[0].decode()
-  ret = p.poll()
-  return (ret, res)
-
-def output_complex_tests(x):
-  print('these tests are too complex:')
-  for t in x:
-    print(t)
-
-def do_tests(tests, ctests, out=False, gpu=False):
-  ecm_exe  = test_dir + ("ecm_gpu.exe" if gpu else "ecm.exe")
-  err_cnt = 0
-  for ix, tt in enumerate(tests):
-    print(tt[1], tt[0], end='')
-    rv = run_exe(ecm_exe, tt[1], tt[0])
-    if type(tt[2]) == int and rv[0] != tt[2]:
-      print(" - *** ERROR in test {:d}: {:d} {:d} ***".format(ix, rv[0], tt[2]))
-      err_cnt += 1
-    elif type(tt[2]) == tuple and rv[0] != tt[2][0] and rv[0] != tt[2][1]:
-      print(" - *** ERROR in test {:d}: {:d} {:s} ***".format(ix, rv[0], tt[2]))
-      err_cnt += 1
-    else:
-      print(" - passed")
-    if out:
-      op = rv[1].rsplit('\r\n')
-      for i in op :
-        print(i)
-
-  if ctests:
-    output_complex_tests(ctests)
-  if not err_cnt:
-    if ctests:
-      print('all other tests passed')
-    else:
-      print('all tests passed')
-
-with Timer():
-  if os.path.exists('test.pm1.save'):
-    os.remove('test.pm1.save')
-  if run_non_gpu_tests:
-    t, ct = get_tests("..\\test.ecm")
-    do_tests(t, ct)
-    t, ct = get_tests("..\\test.pm1")
-    do_tests(t, ct)
-    t, ct = get_tests("..\\test.pp1")
-    do_tests(t, ct)
-    t, ct = get_tests("..\\testlong.pp1")
-    do_tests(t, ct)
-    t, ct = get_tests("..\\testlong.pm1")
-    do_tests(t, ct)
-  if run_gpu_tests:
-    t, ct = get_tests("..\\test.gpuecm")
-    do_tests(t, ct, gpu=True)
diff --git a/build.vc14/tune/Makefile.am b/build.vc14/tune/Makefile.am
deleted file mode 100644
index fe8ca5e2..00000000
--- a/build.vc14/tune/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = tune.vcxproj tune.vcxproj.filters
diff --git a/build.vc14/tune/tune.vcxproj b/build.vc14/tune/tune.vcxproj
deleted file mode 100644
index f7afa7ea..00000000
--- a/build.vc14/tune/tune.vcxproj
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{80E08750-5C6C-492E-BB1E-7200978AE125}</ProjectGuid>
-    <RootNamespace>tune</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="..\vsyasm.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);..\..\;..\assembler;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;TUNE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);%(AdditionalDependencies)</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>
-      </Command>
-    </PostBuildEvent>
-    <YASM>
-      <Defines>
-      </Defines>
-    </YASM>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);..\..\;..\assembler;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;NDEBUG;_CONSOLE;TUNE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)lib\$(IntDir)$(mp_lib);%(AdditionalDependencies)</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>
-      </Command>
-    </PostBuildEvent>
-    <YASM>
-      <Defines>_WIN64</Defines>
-    </YASM>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm" />
-    <YASM Include="..\assembler\redc.asm" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxarith.c" />
-    <ClCompile Include="..\..\auxlib.c" />
-    <ClCompile Include="..\..\ecm_ntt.c" />
-    <ClCompile Include="..\..\ks-multiply.c" />
-    <ClCompile Include="..\..\listz.c" />
-    <ClCompile Include="..\..\median.c" />
-    <ClCompile Include="..\..\mpmod.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TUNE_MULREDC_THRESH#0;TUNE_SQRREDC_THRESH#0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TUNE_MULREDC_THRESH#0;TUNE_SQRREDC_THRESH#0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspm.c" />
-    <ClCompile Include="..\..\mpzspv.c" />
-    <ClCompile Include="..\..\mul_lo.c" />
-    <ClCompile Include="..\..\ntt_gfp.c" />
-    <ClCompile Include="..\..\polyeval.c" />
-    <ClCompile Include="..\..\random.c" />
-    <ClCompile Include="..\..\schoen_strass.c" />
-    <ClCompile Include="..\..\sp.c" />
-    <ClCompile Include="..\..\spm.c" />
-    <ClCompile Include="..\..\spv.c" />
-    <ClCompile Include="..\..\tune.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-    <ClInclude Include="..\..\ecm-params.h" />
-    <ClInclude Include="..\config.h" />
-    <ClInclude Include="..\..\ecm-ecm.h" />
-    <ClInclude Include="..\..\ecm-gmp.h" />
-    <ClInclude Include="..\..\ecm-impl.h" />
-    <ClInclude Include="..\..\ecm.h" />
-    <ClInclude Include="..\..\longlong.h" />
-    <ClInclude Include="..\..\sp.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libecm\libecm.vcxproj">
-      <Project>{cd555681-d65b-4173-a29c-b8bf06a4871b}</Project>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="..\vsyasm.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/tune/tune.vcxproj.filters b/build.vc14/tune/tune.vcxproj.filters
deleted file mode 100644
index dff0286b..00000000
--- a/build.vc14/tune/tune.vcxproj.filters
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Source Files\Assembler">
-      <UniqueIdentifier>{38f1a18f-40fc-4eed-a68e-e79b58327b6c}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm">
-      <Filter>Source Files\Assembler</Filter>
-    </YASM>
-    <YASM Include="..\assembler\redc.asm">
-      <Filter>Source Files\Assembler</Filter>
-    </YASM>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxarith.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\auxlib.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm_ntt.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ks-multiply.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\listz.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\median.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpmod.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mul_lo.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ntt_gfp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\polyeval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\random.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\schoen_strass.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\sp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tune.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\sp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/vacopy.c b/build.vc14/vacopy.c
deleted file mode 100644
index d6a3d81a..00000000
--- a/build.vc14/vacopy.c
+++ /dev/null
@@ -1,8 +0,0 @@
-
-#include <stdarg.h>
-#include <string.h>
-
-void _vacopy(va_list *pap, va_list ap)
-{
-    *pap = ap;
-}
diff --git a/build.vc14/vsyasm.props b/build.vc14/vsyasm.props
deleted file mode 100644
index 9fcf3464..00000000
--- a/build.vc14/vsyasm.props
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup
-    Condition="'$(YASMBeforeTargets)' == '' and '$(YASMAfterTargets)' == '' and '$(ConfigurationType)' != 'Makefile'">
-    <YASMBeforeTargets>Midl</YASMBeforeTargets>
-    <YASMAfterTargets>CustomBuild</YASMAfterTargets>
-  </PropertyGroup>
-  <PropertyGroup>
-    <YASMDependsOn
-      Condition="'$(ConfigurationType)' != 'Makefile'">_SelectedFiles;$(YASMDependsOn)</YASMDependsOn>
-  </PropertyGroup>
-  <PropertyGroup>
-    <YasmPath Condition= "'$(YASMPATH)' == ''">c:\program files\yasm\</YasmPath>
-  </PropertyGroup>
-  <ItemDefinitionGroup>
-    <YASM>
-      <Debug>False</Debug>
-      <ObjectFile>$(IntDir)</ObjectFile>
-      <PreProc>0</PreProc>
-      <Parser>0</Parser>
-      <CommandLineTemplate>"$(YasmPath)"vsyasm.exe -Xvc -f $(Platform) [AllOptions] [AdditionalOptions] [Inputs]</CommandLineTemplate>
-      <Outputs>%(ObjectFile)</Outputs>
-      <ExecutionDescription>Assembling %(Filename)%(Extension)</ExecutionDescription>
-      <ShowOnlyRuleProperties>false</ShowOnlyRuleProperties>
-    </YASM>
-  </ItemDefinitionGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/vsyasm.targets b/build.vc14/vsyasm.targets
deleted file mode 100644
index c86180dd..00000000
--- a/build.vc14/vsyasm.targets
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <PropertyPageSchema
-      Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
-    <AvailableItemName
-      Include="YASM">
-      <Targets>_YASM</Targets>
-    </AvailableItemName>
-  </ItemGroup>
-  <UsingTask
-    TaskName="YASM"
-    TaskFactory="XamlTaskFactory"
-    AssemblyName="Microsoft.Build.Tasks.v4.0">
-    <Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task>
-  </UsingTask>
-  <Target
-    Name="_YASM"
-    BeforeTargets="$(YASMBeforeTargets)"
-    AfterTargets="$(YASMAfterTargets)"
-    Condition="'@(YASM)' != ''"
-    DependsOnTargets="$(YASMDependsOn);ComputeYASMOutput"
-    Outputs="@(YASM->'%(ObjectFile)')"
-    Inputs="@(YASM);%(YASM.AdditionalDependencies);$(MSBuildProjectFile)">
-    <ItemGroup
-      Condition="'@(SelectedFiles)' != ''">
-      <YASM
-        Remove="@(YASM)"
-        Condition="'%(Identity)' != '@(SelectedFiles)'" />
-    </ItemGroup>
-    <ItemGroup>
-      <YASM_tlog
-        Include="%(YASM.ObjectFile)"
-        Condition="'%(YASM.ObjectFile)' != '' and '%(YASM.ExcludedFromBuild)' != 'true'">
-        <Source>@(YASM, '|')</Source>
-      </YASM_tlog>
-    </ItemGroup>
-    <Message
-      Importance="High"
-      Text="%(YASM.ExecutionDescription)" />
-    <WriteLinesToFile
-      Condition="'@(YASM_tlog)' != '' and '%(YASM_tlog.ExcludedFromBuild)' != 'true'"
-      File="$(IntDir)$(ProjectName).write.1.tlog"
-      Lines="^%(YASM_tlog.Source);@(YASM_tlog->'%(Fullpath)')" />
-    <YASM
-      Condition="'@(YASM)' != '' and '%(YASM.ExcludedFromBuild)' != 'true'"
-      CommandLineTemplate="%(YASM.CommandLineTemplate)"
-      Debug="%(YASM.Debug)"
-      PreIncludeFile="%(YASM.PreIncludeFile)"
-      IncludePaths="%(YASM.IncludePaths)"
-      Defines="%(YASM.Defines)"
-      UnDefines="%(YASM.UnDefines)"
-      ObjectFile="%(YASM.ObjectFile)"
-      ListFile="%(YASM.ListFile)"
-      MapFile="%(YASM.MapFile)"
-      ErrorFile="%(YASM.ErrorFile)"
-      SymbolPrefix="%(YASM.SymbolPrefix)"
-      SymbolSuffix="%(YASM.SymbolSuffix)"
-      PreProc="%(YASM.PreProc)"
-      Parser="%(YASM.Parser)"
-      AdditionalOptions="%(YASM.AdditionalOptions)"
-      Inputs="@(YASM)" />
-  </Target>
-  <PropertyGroup>
-    <ComputeLinkInputsTargets>
-            $(ComputeLinkInputsTargets);
-            ComputeYASMOutput;
-          </ComputeLinkInputsTargets>
-    <ComputeLibInputsTargets>
-            $(ComputeLibInputsTargets);
-            ComputeYASMOutput;
-          </ComputeLibInputsTargets>
-  </PropertyGroup>
-  <Target
-    Name="ComputeYASMOutput"
-    Condition="'@(YASM)' != ''">
-    <ItemGroup>
-      <YASMDirsToMake
-        Condition="'@(YASM)' != '' and '%(YASM.ExcludedFromBuild)' != 'true' and !HasTrailingSlash('%(YASM.ObjectFile)')"
-        Include="%(YASM.ObjectFile)" />
-      <Link
-        Include="%(YASMDirsToMake.Identity)"
-        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
-      <Lib
-        Include="%(YASMDirsToMake.Identity)"
-        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
-      <ImpLib
-        Include="%(YASMDirsToMake.Identity)"
-        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
-    </ItemGroup>
-    <ItemGroup>
-      <YASMDirsToMake
-        Condition="'@(YASM)' != '' and '%(YASM.ExcludedFromBuild)' != 'true' and HasTrailingSlash('%(YASM.ObjectFile)')"
-        Include="@(YASM->'%(ObjectFile)%(Filename).obj')" />
-      <Link
-        Include="%(YASMDirsToMake.Identity)"
-        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
-      <Lib
-        Include="%(YASMDirsToMake.Identity)"
-        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
-      <ImpLib
-        Include="%(YASMDirsToMake.Identity)"
-        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
-    </ItemGroup>
-    <MakeDir
-      Directories="@(YASMDirsToMake->'%(RootDir)%(Directory)')" />
-  </Target>
-</Project>
\ No newline at end of file
diff --git a/build.vc14/vsyasm.xml b/build.vc14/vsyasm.xml
deleted file mode 100644
index 0b259559..00000000
--- a/build.vc14/vsyasm.xml
+++ /dev/null
@@ -1,283 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<ProjectSchemaDefinitions xmlns="clr-namespace:Microsoft.Build.Framework.XamlTypes;assembly=Microsoft.Build.Framework" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:transformCallback="Microsoft.Cpp.Dev10.ConvertPropertyCallback">
-  <Rule
-    Name="YASM"
-    PageTemplate="tool"
-    DisplayName="Yasm Assembler"
-    Order="200">
-      
-    <Rule.DataSource>
-      <DataSource
-        Persistence="ProjectFile"
-        ItemType="YASM" />
-    </Rule.DataSource>
-      
-    <Rule.Categories>
-        
-      <Category
-        Name="General">
-        <Category.DisplayName>
-          <sys:String>General</sys:String>
-        </Category.DisplayName>
-      </Category>
-
-      <Category
-        Name="Symbols">
-          <Category.DisplayName>
-              <sys:String>Symbols</sys:String>
-          </Category.DisplayName>
-      </Category>
-
-      <Category
-        Name="Files">
-          <Category.DisplayName>
-              <sys:String>Files</sys:String>
-          </Category.DisplayName>
-      </Category>
-        
-      <Category
-        Name="Command Line"
-        Subtype="CommandLine">
-        <Category.DisplayName>
-          <sys:String>Command Line</sys:String>
-        </Category.DisplayName>
-      </Category>
-        
-    </Rule.Categories>
-
-    <StringListProperty
-      Name="Inputs"
-      Category="Command Line"
-      IsRequired="true"
-      Switch=" ">
-      <StringListProperty.DataSource>
-        <DataSource
-          Persistence="ProjectFile"
-          ItemType="YASM"
-          SourceType="Item" />
-      </StringListProperty.DataSource>
-    </StringListProperty>
-    
-    <BoolProperty
-      Name="Debug"
-      Subcategory="Configuration"
-      HelpContext="0"
-      DisplayName="Debug Information"
-      Description="Generate debugging information"
-      Switch="-g cv8" />
-
-    <StringListProperty
-      Name="IncludePaths"
-      Subcategory="Configuration"
-      HelpContext="0"
-      DisplayName="Include Paths"
-      Description="Set the paths for any additional include files"
-      Switch="-i &quot;[value]&quot;" />
-
-    <StringListProperty
-      Name="Defines"
-      Category="Symbols"
-      Subcategory="Pre-Defined Symbols"
-      HelpContext="0"
-      DisplayName="Defined Symbols"
-      Description="Specify pre-defined symbols ('symbol' or 'symbol = value') "
-      Switch="-d &quot;[value]&quot;" />
-    
-    <StringListProperty
-      Name="UnDefines"
-      Category="Symbols"
-      Subcategory="Pre-Defined Symbols"
-      HelpContext="0"
-      DisplayName="Remove Symbols"
-      Description="Remove pre-defined symbols "
-      Switch="-u &quot;[value]&quot;" />
-    
-    <StringProperty
-      Name="ObjectFile"
-      Subcategory="Output"
-      HelpContext="0"
-      DisplayName="Object File Name"
-      Description="Select the output file name"
-      Switch="-o &quot;[value]&quot;" />
-    
-    <StringProperty
-      Name="ListFile"
-      Category="Files"
-      Subcategory="Output"
-      HelpContext="0"
-      DisplayName="List File Name"
-      Description="Select an output listing by setting its file name"
-      Switch="-l &quot;[value]&quot;" />
-    
-    <StringProperty
-      Name="PreIncludeFile"
-      Category="Files"
-      Subcategory="Configuration"
-      HelpContext="0"
-      DisplayName="Pre Include File"
-      Description="Select a pre-included file by setting its name"
-      Switch="-P &quot;[value]&quot;" />
-      
-    <StringProperty
-      Name="MapFile"
-      Category="Files"
-      Subcategory="Output"
-      HelpContext="0"
-      DisplayName="Map File Name"
-      Description="Select a map output by setting its file name"
-      Switch="--mapdir=&quot;[value]&quot;" />
-
-    <StringProperty
-      Name="ErrorFile"
-      Category="Files"
-      Subcategory="Output"
-      HelpContext="0"
-      DisplayName="Error File Name"
-      Description="Send error/warning messages to a file by setting its name"
-      Switch="-E &quot;[value]&quot;" />
-
-    <StringProperty
-      Name="SymbolPrefix"
-      Category="Symbols"
-      Subcategory="Symbols"
-      HelpContext="0"
-      DisplayName="External Symbol Prefix"
-      Description="Prepend symbol to all external symbols"
-      Switch="--prefix=&quot;[value]&quot;" />
-
-    <StringProperty
-      Name="SymbolSuffix"
-      Category="Symbols"
-      Subcategory="Symbols"
-      HelpContext="0"
-      DisplayName="External Symbol Suffix"
-      Description="Append symbol to all external symbols"
-      Switch="--suffix=&quot;[value]&quot;" />
-
-    <EnumProperty
-      Name="PreProc"
-      Subcategory="Configuration"
-      HelpContext="0"
-      DisplayName="Pre-Processor"
-      Description="Select the pre-processor ('nasm' or 'raw')">
-      <EnumValue
-        Name="0"
-        DisplayName="Nasm "
-        Switch="-rnasm" />
-      <EnumValue
-        Name="1"
-        DisplayName="Raw"
-        Switch="-rraw" />
-    </EnumProperty>
-    
-    <EnumProperty
-      Name="Parser"
-      Subcategory="Configuration"
-      HelpContext="0"
-      DisplayName="Parser"
-      Description="Select the parser for Intel ('nasm') or AT&amp;T ( 'gas') syntax">
-      <EnumValue
-        Name="0"
-        DisplayName="Nasm"
-        Switch="-pnasm" />
-      <EnumValue
-        Name="1"
-        DisplayName="Gas"
-        Switch="-pgas" />
-    </EnumProperty>
-    
-    <StringProperty
-      Name="CommandLineTemplate"
-      DisplayName="Command Line"
-      Visible="False"
-      IncludeInCommandLine="False" />
-    
-    <DynamicEnumProperty
-      Name="YASMBeforeTargets"
-      Category="General"
-      EnumProvider="Targets"
-      IncludeInCommandLine="False">
-      <DynamicEnumProperty.DisplayName>
-        <sys:String>Execute Before</sys:String>
-      </DynamicEnumProperty.DisplayName>
-      <DynamicEnumProperty.Description>
-        <sys:String>Specifies the targets for the build customization to run before.</sys:String>
-      </DynamicEnumProperty.Description>
-      <DynamicEnumProperty.ProviderSettings>
-        <NameValuePair
-          Name="Exclude"
-          Value="^YASMBeforeTargets|^Compute" />
-      </DynamicEnumProperty.ProviderSettings>
-      <DynamicEnumProperty.DataSource>
-        <DataSource
-          Persistence="ProjectFile"
-          HasConfigurationCondition="true" />
-      </DynamicEnumProperty.DataSource>
-    </DynamicEnumProperty>
-    
-    <DynamicEnumProperty
-      Name="YASMAfterTargets"
-      Category="General"
-      EnumProvider="Targets"
-      IncludeInCommandLine="False">
-      <DynamicEnumProperty.DisplayName>
-        <sys:String>Execute After</sys:String>
-      </DynamicEnumProperty.DisplayName>
-      <DynamicEnumProperty.Description>
-        <sys:String>Specifies the targets for the build customization to run after.</sys:String>
-      </DynamicEnumProperty.Description>
-      <DynamicEnumProperty.ProviderSettings>
-        <NameValuePair
-          Name="Exclude"
-          Value="^YASMAfterTargets|^Compute" />
-      </DynamicEnumProperty.ProviderSettings>
-      <DynamicEnumProperty.DataSource>
-        <DataSource
-          Persistence="ProjectFile"
-          ItemType=""
-          HasConfigurationCondition="true" />
-      </DynamicEnumProperty.DataSource>
-    </DynamicEnumProperty>
-    
-    <StringListProperty
-      Name="Outputs"
-      DisplayName="Outputs"
-      Visible="False"
-      IncludeInCommandLine="False" />
-    
-    <StringProperty
-      Name="ExecutionDescription"
-      DisplayName="Execution Description"
-      Visible="False"
-      IncludeInCommandLine="False" />
-    
-    <StringListProperty
-      Name="AdditionalDependencies"
-      DisplayName="Additional Dependencies"
-      IncludeInCommandLine="False"
-      Visible="true" />
-    
-    <StringProperty
-      Subtype="AdditionalOptions"
-      Name="AdditionalOptions"
-      Category="Command Line">
-      <StringProperty.DisplayName>
-        <sys:String>Additional Options</sys:String>
-      </StringProperty.DisplayName>
-      <StringProperty.Description>
-        <sys:String>Additional Options</sys:String>
-      </StringProperty.Description>
-    </StringProperty>
-  </Rule>
-  
-  <ItemType
-    Name="YASM"
-    DisplayName="Yasm Assembler" />
-  <FileExtension
-    Name="*.asm"
-    ContentType="YASM" />
-  <ContentType
-    Name="YASM"
-    DisplayName="Yasm Assembler"
-    ItemType="YASM" />
-</ProjectSchemaDefinitions>
\ No newline at end of file
diff --git a/build.vc15/Makefile.am b/build.vc15/Makefile.am
deleted file mode 100644
index d199fdfd..00000000
--- a/build.vc15/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-EXTRA_DIST = config.h ecm.sln ecm_gpu.sln file_copy.bat gen_ecm_h.bat \
-             getopt.c getopt.h getrusage.c getrusage.h gettimeofday.c \
-	     gettimeofday.h mp_lib.props out_copy_rename.bat prebuild.bat \
-	     python.bat readme.txt tests.py vacopy.c vsyasm.props \
-	     vsyasm.targets vsyasm.xml
-
-DIST_SUBDIRS = assembler ecm ecm_gpu libecm libecm_gpu tune bench_mulredc
diff --git a/build.vc15/assembler/Makefile.am b/build.vc15/assembler/Makefile.am
deleted file mode 100644
index 3b2f7d84..00000000
--- a/build.vc15/assembler/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-EXTRA_DIST = a_win32a_mulredc.asm a_win32a_redc.asm a_win32p_mulredc.asm \
-             a_win32p_redc.asm a_x64_mulredc.asm a_x64_redc.asm \
-             test_mulredc.c mulredc.h mulredc.asm redc.asm
diff --git a/build.vc15/assembler/a_win32a_redc.asm b/build.vc15/assembler/a_win32a_redc.asm
deleted file mode 100644
index 9b473071..00000000
--- a/build.vc15/assembler/a_win32a_redc.asm
+++ /dev/null
@@ -1,133 +0,0 @@
-;
-; Part of GMP-ECM
-;
-; void ecm_redc3(
-;       mp_limb_t       *z,     rdi  r8  <- rcx
-;       const mp_limb_t *x,     rsi  r9  <- rdx
-;       size_t           n,     rdx r10  <-  r8
-;       mp_limb_t        m      rcx r11  <-  r9
-;   )
-
-%macro  seq 3
-    mov     eax, [byte esi+4*%3]
-    mul     ebp
-    add     [byte edi+4*%3], %2
-    adc     %1, eax
-    mov     %2, edx
-    adc     %2, 0
-%endmacro
-
-    text
-    global _ecm_redc3
-     
-_ecm_redc3:
-	push	ebp					
-	push	edi
-	push	esi
-	push	ebx
-	sub	    esp, 16
-	mov	    ecx, [esp+44]
-	mov	    edi, [esp+36]
-	mov	    [esp], ecx
-    cmp     ecx, 5
-    jae     .3		
-
-.1:	mov	    ebp, [esp+48]
-    mov     esi, [esp+40]
-	imul	ebp, [edi]				
-	mov	    [esp+36], edi
-	mov	    ecx, [esp+44]
-	xor	    ebx, ebx			
-
-.2: mov     eax, [esi]
-    add     edi, 4
-    mul     ebp			
-    add     esi, 4
-    add     eax, ebx
-    adc     edx, 0		
-    add     [edi-4], eax
-    adc     edx, 0		
-    dec     ecx			
-    mov     ebx, edx
-    jnz     .2		
-    mov	    edi, [esp+36]
-    mov     [edi], ebx
-    dec	    dword [esp]
-    lea	    edi, [edi+4]			
-    jnz     .1				
-
-	add	    esp, 16
-	pop	    ebx
-	pop	    esi
-	pop	    edi
-	pop 	ebp
-	ret
-	
-.3: mov     edx, ecx
-    dec     ecx
-    sub     edx, 2
-    neg     ecx	
-    shr     edx, 4
-    and     ecx, 15
-    mov     [esp+8], edx
-    mov     edx, ecx
-    shl     edx, 4
-    neg     ecx
-    lea    edx, [edx+ecx+.6]
-    mov	    [esp+44], ecx
-    mov	    [esp+12], edx
-
-.4:	mov     ebp, [esp+48]
-    mov     esi, [esp+40]
-    imul    ebp, [edi]                          
-    mov     [esp+36], edi                  
-    mov     ecx, [esp+44]
-    mov     edx, [esp+8]
-    mov	    [esp+4], edx
-    mov     eax, [esi]
-    lea     esi, [esi+ecx*4+4]
-    mul     ebp
-    lea     edi, [edi+ecx*4]
-    mov     ebx, edx
-    mov     edx, [esp+12]
-    test    ecx, 1
-    mov     ecx, eax
-    cmovnz  ecx, ebx
-    cmovnz  ebx, eax
-    jmp     edx
-
-    align   32
-.5:	add     edi, 64
-.6:	
-
-%assign i 0
-%rep 16
-    %if (i & 1)
-        seq     ecx, ebx,  i
-    %else
-        seq     ebx, ecx,  i
-    %endif
-    %assign i i + 1
-%endrep
-
-    dec     dword [esp+4]
-    lea     esi, [esi+64]
-    jns     .5
-
-    add     [edi+64], ecx
-    mov     edi, [esp+36]
-    adc     ebx, 0
-    mov     [edi], ebx
-    dec     dword [esp]
-    lea     edi, [edi+4]
-    jnz     .4                      
-
-    add     esp, 16
-    pop     ebx
-    pop     esi
-    pop     edi
-    pop     ebp
-    ret
-
-    end
-    
\ No newline at end of file
diff --git a/build.vc15/assembler/a_win32p_mulredc.asm b/build.vc15/assembler/a_win32p_mulredc.asm
deleted file mode 100644
index 001f7255..00000000
--- a/build.vc15/assembler/a_win32p_mulredc.asm
+++ /dev/null
@@ -1,148 +0,0 @@
-
-; Part of GMP-ECM
-;
-; mp_limb_t mulredc1(           1 limb
-;       mp_limb_t       *z,
-;       const mp_limb_t  x,
-;       const mp_limb_t  y,
-;       const mp_limb_t  m,
-;       mp_limb_t inv_m
-;   )
-;
-; mp_limb_t mulredc<limbs>(   > 1 limb
-;       mp_limb_t       *z,
-;       const mp_limb_t *x,
-;       const mp_limb_t *y,
-;       const mp_limb_t *m,
-;       mp_limb_t inv_m
-;   )
-
-%macro mseq 1
-	movd	mm1, [esi+4*%1]
-	movd	mm2, [edi+4*%1]
-	pmuludq	mm1, mm7
-	paddq	mm2, mm1
-	paddq	mm0, mm2
-	movd	[edi+4*%1], mm0
-	psrlq   mm0, 32
-%endmacro
-
-%macro  mulredc 1
-%assign limbs       %1
-%define f_name(x)   _mulredc %+ x
-
-	global	f_name(limbs)
-%ifdef	DLL
-	export	f_name(limbs)
-%endif
-
-f_name(limbs):
-	push    ebp
-	push    edi
-	push    esi
-	push    ebx
-	sub	    esp, 8*(limbs+1)
-	mov	    edi, esp
-
-%assign i 0
-%rep    2 * limbs + 1
-	mov	    dword [edi+4*i], 0
-	%assign i i + 1
-%endrep
-
-	mov	    dword [esp+8*limbs+4], limbs
-
-    align 32
-
-.1:	mov	    eax, [esp+8*limbs+32]
-	mov	    esi, [esp+8*limbs+36]
-	mov	    eax, [eax]
-	mul	    dword [esi]
-	add	    eax, [edi]
-	mul	    dword [esp+8*limbs+44]
-	mov     ebp, eax
-	mov	    esi, [esp+8*limbs+40]
-
-	pxor	mm0, mm0
-	movd	mm7, ebp
-
-%assign i 0
-%rep limbs
-    mseq i
-    %assign i i + 1
-%endrep
-
-	movd	ecx, mm0
-
-	add	    [edi+4*limbs], ecx
-	adc	    dword [edi+4*limbs+4], 0
-	mov	    eax, [esp+8*limbs+32]
-	mov	    ebp, [eax]
-	mov	    esi, [esp+8*limbs+36]
-
-	pxor	mm0, mm0
-	movd	mm7, ebp
-
-%assign i 0
-%rep limbs
-    mseq i
-    %assign i i + 1
-%endrep
-
-	movd	ecx, mm0
-    add     [edi+4*limbs], ecx
-    adc     dword [edi+4*limbs+4], 0
-	add	    dword [esp+8*limbs+32], 4
-	add	    edi, 4
-	dec	    dword [esp+8*limbs+4]
-	jnz	    .1
-
-	mov	    ebx, [esp+8*limbs+28]
-
-%assign i 0
-%rep limbs
-	mov	    eax, [edi+4*i]
-	mov	    [ebx+4*i], eax
-	%assign i i + 1
-%endrep
-	mov	    eax, [edi+4*limbs]
-	add     esp, 8*(limbs+1)
-
-	pop     ebx
-	pop     esi
-	pop     edi
-	pop     ebp
-	emms
-	ret
-%endmacro
-
-    bits    32
-	section .text
-
-	global	_mulredc1
-%ifdef	DLL
-	export	_mulredc1
-%endif
-
-_mulredc1:
-	mov	    eax, [esp+12]
-	mul	    dword [esp+8]
-	mov     [esp+12], edx
-	mov     [esp+8], eax
-	mul	    dword [esp+20]
-	mul	    dword [esp+16]
-	add	    eax, [esp+8]
-	adc	    edx, [esp+12]
-	mov	    ecx, [esp+4]
-	mov     [ecx], edx
-	adc	    eax, 0
-	ret
-
-%assign i 2
-%rep    19      ; 3..20 inclusive
-    mulredc i
-    %assign i i + 1
-%endrep
-
-    end
-
diff --git a/build.vc15/assembler/a_win32p_redc.asm b/build.vc15/assembler/a_win32p_redc.asm
deleted file mode 100644
index b94bd9f9..00000000
--- a/build.vc15/assembler/a_win32p_redc.asm
+++ /dev/null
@@ -1,145 +0,0 @@
-;
-; Part of GMP-ECM
-;
-; void ecm_redc3(
-;       mp_limb_t       *z,     rdi  r8  <- rcx
-;       const mp_limb_t *x,     rsi  r9  <- rdx
-;       size_t           n,     rdx r10  <-  r8
-;       mp_limb_t        m      rcx r11  <-  r9
-;   )
-
-%macro rloop 3
-    mov    eax, [byte esi+4*%3]
-    mul    ebp
-    add    [byte edi+4*%3], %2
-    adc    %1, eax
-    mov    %2, edx
-    adc    %2, 0
-%endmacro
-
-    bits    32
-	section .text
-
-	global	_ecm_redc3
-%ifdef	DLL
-	export	_ecm_redc3
-%endif
-
-_ecm_redc3:
-	push	ebp
-	push	edi
-	push	esi
-	push	ebx
-	sub	    esp, 16
-
-	mov	    ecx, [esp+44]
-	mov	    edi, [esp+36]
-	mov	    [esp], ecx
-    cmp     ecx, 5
-    jae     .unroll
-
-.1: mov	    ebp, [esp+48]
-    mov     esi, [esp+40]
-	imul    ebp, [edi]
-	mov	    [esp+36], edi
-	mov	    ecx, [esp+44]
-	xor	    ebx, ebx
-
-.2: mov     eax, [esi]
-	add     edi, 4
-	mul     ebp
-	add     esi, 4
-	add     eax, ebx
-    adc     edx, 0
-	add     [edi-4], eax
-	adc     edx, 0
-	dec     ecx
-	mov     ebx, edx
-	jnz     .2
-	mov	    edi, [esp+36]
-	mov     [edi], ebx
-	dec	    dword [esp]
-	lea	    edi, [edi+4]
-	jnz     .1
-
-	add	    esp, 16
-	pop	    ebx
-	pop	    esi
-	pop	    edi
-	pop	    ebp
-	ret
-
-.unroll:
-	mov     edx, ecx
-    dec     ecx
-	sub     edx, 2
-	neg     ecx
-	shr     edx, 4
-	and     ecx, 15
-	mov     [esp+8], edx
-	mov     edx, ecx
-	shl     edx, 4
-	neg     ecx
-    lea     edx, [edx+ecx*1+.loop_base]
-	mov	    [esp+44], ecx
-	mov	    [esp+12], edx
-
-.4:	mov     ebp, [esp+48]
-    mov     esi, [esp+40]
-    imul    ebp, [edi]
-    mov     [esp+36], edi
-    mov     ecx, [esp+44]
-	mov     edx, [esp+8]
-	mov	    [esp+4], edx
-    mov     eax, [esi]
-    lea     esi, [esi+ecx*4+4]
-    mul     ebp
-	lea     edi, [edi+ecx*4]
-    mov     ebx, edx
-    mov     edx, [esp+12]
-    test    ecx, 1
-    mov     ecx, eax
-	cmovnz  ecx, ebx
-    cmovnz  ebx, eax
-    jmp     edx
-
-    align  32
-.5:	add    edi, 64
-.loop_base:
-    rloop ebx, ecx,  0
-    rloop ecx, ebx,  1
-    rloop ebx, ecx,  2
-    rloop ecx, ebx,  3
-    rloop ebx, ecx,  4
-    rloop ecx, ebx,  5
-    rloop ebx, ecx,  6
-    rloop ecx, ebx,  7
-    rloop ebx, ecx,  8
-    rloop ecx, ebx,  9
-    rloop ebx, ecx, 10
-    rloop ecx, ebx, 11
-    rloop ebx, ecx, 12
-    rloop ecx, ebx, 13
-    rloop ebx, ecx, 14
-    rloop ecx, ebx, 15
-
-    dec     dword [esp+4]
-    lea     esi, [esi+64]
-    jns     .5
-
-    add     [edi+64], ecx
-    mov     edi, [esp+36]
-    adc     ebx, 0
-    mov     [edi], ebx
-    dec     dword [esp]
-    lea     edi, [edi+4]
-    jnz     .4
-
-    add     esp, 16
-    pop     ebx
-    pop     esi
-    pop     edi
-    pop     ebp
-    ret
-
-    end
diff --git a/build.vc15/assembler/a_x64_mulredc.asm b/build.vc15/assembler/a_x64_mulredc.asm
deleted file mode 100644
index 4f09d33c..00000000
--- a/build.vc15/assembler/a_x64_mulredc.asm
+++ /dev/null
@@ -1,237 +0,0 @@
-;
-; Part of GMP-ECM
-;
-; mp_limb_t mulredc1(             MSVC    1 limb
-;       mp_limb_t       *z,        rcx
-;       const mp_limb_t  x,        rdx
-;       const mp_limb_t  y,         r8
-;       const mp_limb_t  m,         r9
-;       mp_limb_t inv_m     [rsp+0x28]
-;   )
-;
-; mp_limb_t mulredc<limbs>(       MSVC  > 1 limb
-;       mp_limb_t       *z,        rcx
-;       const mp_limb_t *x,        rdx
-;       const mp_limb_t *y,         r8
-;       const mp_limb_t *m,         r9
-;       mp_limb_t inv_m     [rsp+0x28]
-;   )
-
-%macro  mseq_1 4
-	mov	    %2, rcx
-	mul	    r14
-	add	    %1, rax
-	mov	    rax, [r9+8*%3]
-	adc	    %2, rdx
-	mul	    r11
-%if %3 < %4 - 1
-	    add	    rax, %1
-	    mov     [rbp+8*(%3-1)], rax
-	    mov	    rax, [r8+8*(%3+1)]
-	    adc	    %2, rdx
-	    setc	cl
-%else
-        add     %1, rax
-	    mov	    [rbp+8*(%3-1)], %1
-	    adc     %2, rdx
-	    mov     [rbp+8*%3], %2
-	    setc	cl
-	    mov	    [rbp+8*(%3+1)], rcx
-%endif
-%endmacro
-
-%macro mseq_20 2
-	mov	    r14, [r13+r12*8]
-	mov	    rax, [r8]
-    mov	    %1, [rbp]
-	mov	    %2, [rbp+8]
-	mul	    r14
-	add	    r12, 1
-	add	    rax, %1
-	adc	    %2, rdx
-	setc	cl
-	mov 	%1, rax
-	imul	rax, r10
-	mov	    r11, rax
-	mul	    qword [r9]
-	add	    %1, rax
-	adc	    %2, rdx
-	mov	    rax, [r8+8]
-%endmacro
-
-%macro mseq_2 4
-	mov     %2, [rbp+8*(%3+1)]
-	adc	    %2, rcx
-%if %3 < %4 - 1
-	setc	cl
-%endif
-	mul	    r14
-	add	    %1, rax
-	mov	    rax, [r9+8*%3]
-	adc	    %2, rdx
-%if %3 < %4 - 1
-	adc	    cl, 0
-%else
-	setc	cl
-%endif
-	mul	    r11
-%if %3 < %4 - 1
-	    add	    rax, %1
-	    mov	    [rbp+8*(%3-1)], rax
-	    adc	    %2, rdx
-	    mov	    rax, [r8+8*(%3+1)]
-%else
-        add     %1, rax
-        mov     [rbp+8*(%3-1)], %1
-        adc     %2, rdx
-	    mov	    [rbp+8*%3],%2
-	    adc	    cl, 0
-	    mov	    [rbp+8*(%3+1)], rcx
-%endif
-%endmacro
-
-%macro store 1
-%assign i 0
-%rep %1
-    %if i == %1 - 1 && (%1 & 1)
-	    mov	    rax, [rbp+8*i]
-	    mov 	[rdi+8*i], rax
-    %elif (i & 1)
-	    mov 	[rdi+8*(i-1)], rax
-	    mov 	[rdi+8*i], rdx
-    %else
-	    mov	    rax, [rbp+8*i]
-    	mov	    rdx, [rbp+8*(i+1)]
-    %endif
-    %assign i i + 1
-%endrep
-%endmacro
-
-%macro mulredc 1
-
-%assign limbs       %1
-%define f_name(x)   mulredc %+ x
-%define stack_space 8 * (limbs + 1 + (limbs & 1))
-
-	global	f_name(limbs)
-%ifdef DLL
-	export	f_name(limbs)
-%endif
-
-    align   64
-
-PROC_FRAME	f_name(limbs)               ; SEH Frame
-    push_reg    rbp
-    push_reg    rbx
-    push_reg    rsi
-    push_reg    rdi
-    push_reg    r12
-    push_reg    r13
-    push_reg    r14
-    alloc_stack stack_space
-END_PROLOGUE
-                                        ;   *y in  r8
-	mov     rdi, rcx                    ;   *z -> rdi
-	mov	    r13, rdx                    ;   *x -> r13
-    mov     r10, [rsp+8*12+stack_space] ; invm -> r10
-                                        ;   *m in  r9
-	mov     r14, [r13]
-	mov	    rax, [r8]
-	xor     rcx, rcx
-	lea	    rbp, [rsp]
-	mov     r12, rcx
-	mul     qword r14
-	add	    r12, 1
-	mov 	rsi, rax
-	mov	    rbx, rdx
-	imul	rax, r10
-	mov	    r11, rax
-	mul	    qword [r9]
-	add	    rsi, rax
-	mov	    rax, [r8+8]
-	adc	    rbx, rdx
-	setc	cl
-
-%assign j 1
-%rep    limbs - 1
-%if (j & 1)
-    mseq_1  rbx, rsi, j, limbs
-%else
-    mseq_1  rsi, rbx, j, limbs
-%endif
-   %assign j j + 1
-%endrep
-
-    align 32
-.1:
-
-%assign j 1
-%if (limbs & 1)
-    mseq_20 rsi, rbx
-    %rep    limbs - 1
-        %if (j & 1)
-            mseq_2  rbx, rsi, j, limbs
-        %else
-            mseq_2  rsi, rbx, j, limbs
-        %endif
-        %assign j j + 1
-    %endrep
-%else
-    mseq_20 rbx, rsi
-    %rep    limbs - 1
-        %if (j & 1)
-            mseq_2  rsi, rbx, j, limbs
-        %else
-            mseq_2  rbx, rsi, j, limbs
-        %endif
-        %assign j j + 1
-    %endrep
-%endif
-
-	cmp     r12, limbs
-	jb	    .1
-
-    store   limbs
-
-	mov	    rax, rcx
-	add     rsp, stack_space
-	pop     r14
-	pop     r13
-	pop     r12
-	pop     rdi
-	pop     rsi
-	pop     rbx
-	pop     rbp
-	ret
-ENDPROC_FRAME
-%endmacro
-
-	bits    64
-	section .text
-
-	global	mulredc1
-%ifdef DLL
-	export	mulredc1
-%endif
-
-    align   64
-mulredc1:
-	mov	    rax, r8
-	mul	    rdx
-	mov	    r10, rax
-	mov	    r11, rdx
-	mul	    qword [rsp+0x28]
-	mul	    r9
-	add	    rax, r10
-	adc	    rdx, r11
-	mov	    [rcx], rdx
-	adc	    rax, 0
-	ret
-
-%assign i 2
-%rep    19      ; 2..20 inclusive
-    mulredc i
-    %assign i i + 1
-%endrep
-
-    end
diff --git a/build.vc15/assembler/a_x64_redc.asm b/build.vc15/assembler/a_x64_redc.asm
deleted file mode 100644
index 49a02452..00000000
--- a/build.vc15/assembler/a_x64_redc.asm
+++ /dev/null
@@ -1,161 +0,0 @@
-;
-; Part of GMP-ECM
-;
-; void ecm_redc3(
-;       mp_limb_t       *z,     rdi  r8  <- rcx
-;       const mp_limb_t *x,     rsi  r9  <- rdx
-;       size_t           n,     rdx r10  <-  r8
-;       mp_limb_t        m      rcx r11  <-  r9
-;   )
-
-%macro rloop 3
-    mov     rax,[byte rsi+8*%3]
-    mul     rbp
-    add     [byte rdi+8*%3], %1
-    adc     %2, rax
-    mov     %1, rdx
-    adc     %1, 0
-%endmacro
-
-	bits 64
-	section .text
-
-	global	ecm_redc3
-%ifdef DLL
-	export	ecm_redc3
-%endif
-
-PROC_FRAME	ecm_redc3
-    push_reg    rbp
-    push_reg    rbx
-    push_reg    rsi
-    push_reg    rdi
-	alloc_stack	5*8
-END_PROLOGUE
-	mov     rdi, rcx
-	mov     rsi, rdx
-	mov     rdx, r8
-	mov     rcx, r9
-
-	mov     r8, rdi
-	mov     r9, rsi
-	mov     r10, rdx
-	mov     r11, rcx
-
-	mov	    rcx, r10
-	mov	    [rsp], rcx
-    cmp     rcx, 3
-    jae     .unroll
-
-.1: mov	    rbp, r11
-	mov     rsi, r9
-	imul    rbp, [rdi]
-	mov	    r8, rdi
-	mov	    rcx, r10
-	xor	    rbx, rbx
-
-.2: mov     rax, [rsi]
-	add     rdi, 8
-	mul     rbp
-	add     rsi, 8
-	add     rax, rbx
-    adc     rdx, 0
-	add     [rdi-8], rax
-	adc     rdx, 0
-	dec     rcx
-	mov     rbx, rdx
-	jnz     .2
-	mov	    rdi, r8
-	mov     [rdi], rbx
-	dec	    qword [rsp]
-	lea	    rdi, [rdi+8]
-	jnz     .1
-
-    add     rsp, 5*8
-    pop     rdi
-    pop     rsi
-    pop     rbx
-    pop     rbp
-    ret
-
-.unroll:
-	mov     rdx, rcx
-    dec     rcx
-	sub     rdx, 2
-	neg     rcx
-	shr     rdx, 4
-	and     rcx, 15
-	mov     [rsp+16], rdx
-	mov     rdx, rcx
-	shl     rdx, 4
-    lea     r10, [.loop_base wrt rip]
-    add     rdx, r10
-    lea     rdx, [rdx+rcx*4]
-	add	    rdx, rcx
-	neg     rcx
-	mov	    r10, rcx
-	mov	    [rsp+24], rdx
-
-.4:	mov     rbp, r11
-    mov     rsi, r9
-    imul    rbp, [rdi]
-    mov     r8, rdi
-    mov     rcx, r10
-	mov     rdx, [rsp+16]
-	mov	    [rsp+8], rdx
-
-    mov     rax, [rsi]
-    lea     rsi, [rsi+rcx*8+8]
-    mul     rbp
-	lea     rdi, [rdi+rcx*8]
-	mov     rbx, rdx
-
-    mov     rdx, [rsp+24]
-    test    rcx, 1
-    mov     rcx, rax
-	cmovnz  rcx, rbx
-	cmovnz  rbx, rax
-	jmp     rdx
-
-    align   64
-
-.5:	add     rdi, 128
-.loop_base:
-    rloop rcx, rbx,  0
-    rloop rbx, rcx,  1
-    rloop rcx, rbx,  2
-    rloop rbx, rcx,  3
-    rloop rcx, rbx,  4
-    rloop rbx, rcx,  5
-    rloop rcx, rbx,  6
-    rloop rbx, rcx,  7
-    rloop rcx, rbx,  8
-    rloop rbx, rcx,  9
-    rloop rcx, rbx, 10
-    rloop rbx, rcx, 11
-    rloop rcx, rbx, 12
-    rloop rbx, rcx, 13
-    rloop rcx, rbx, 14
-    rloop rbx, rcx, 15
-
-    dec     qword [rsp+8]
-    lea     rsi, [rsi+128]
-    jns     .5
-
-    add     [rdi+128], rcx
-    mov     rdi, r8
-    adc     rbx, 0
-    mov     [rdi], rbx
-    dec     qword [rsp]
-    lea     rdi, [rdi+8]
-    jnz     .4
-
-    add     rsp, 5*8
-    pop     rdi
-    pop     rsi
-    pop     rbx
-    pop     rbp
-    ret
-ENDPROC_FRAME
-
-    end
diff --git a/build.vc15/assembler/mulredc.asm b/build.vc15/assembler/mulredc.asm
deleted file mode 100644
index ffe18e1c..00000000
--- a/build.vc15/assembler/mulredc.asm
+++ /dev/null
@@ -1,8 +0,0 @@
-
-%ifdef _WIN64
-%include "a_x64_mulredc.asm"
-%elifdef AMD_ASM
-%include "a_win32a_mulredc.asm"
-%else
-%include "a_win32p_mulredc.asm"
-%endif
diff --git a/build.vc15/assembler/mulredc.h b/build.vc15/assembler/mulredc.h
deleted file mode 100644
index 8902af37..00000000
--- a/build.vc15/assembler/mulredc.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef __ASM_REDC_H__
-#define __ASM_REDC_H__
-
-#include <gmp.h>
-
-extern void ecm_redc3(mp_limb_t *cp, const mp_limb_t *np, mp_size_t nn, mp_limb_t Nprim);
-
-
-/* WARNING: the size-1 version doesn't take pointers in input */
-extern mp_limb_t mulredc1(mp_limb_t *z, mp_limb_t x, mp_limb_t y, mp_limb_t m, mp_limb_t inv_m);
-
-extern mp_limb_t mulredc2(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc3(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc4(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc5(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc6(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc7(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc8(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc9(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc10(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc11(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc12(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc13(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc14(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc15(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc16(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc17(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc18(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc19(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-extern mp_limb_t mulredc20(mp_limb_t *z, const mp_limb_t *x, const mp_limb_t *y, const mp_limb_t *m, mp_limb_t inv_m);
-
-#endif
diff --git a/build.vc15/assembler/redc.asm b/build.vc15/assembler/redc.asm
deleted file mode 100644
index 1653e1ce..00000000
--- a/build.vc15/assembler/redc.asm
+++ /dev/null
@@ -1,7 +0,0 @@
-%ifdef _WIN64
-%include "a_x64_redc.asm"
-%elif AMD_ASM
-%include "a_win32a_redc.asm"
-%else
-%include "a_win32p_redc.asm"
-%endif
diff --git a/build.vc15/assembler/test_mulredc.c b/build.vc15/assembler/test_mulredc.c
deleted file mode 100644
index f95234da..00000000
--- a/build.vc15/assembler/test_mulredc.c
+++ /dev/null
@@ -1,303 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-
-#include <gmp.h>
-
-#include "asmredc.h"
-
-void mp_print(mp_limb_t *x, int N) {
-  int i;
-  for (i = 0; i < N-1; ++i)
-    printf("%lu + W*(", x[i]);
-  printf("%lu", x[N-1]);
-  for (i = 0; i < N-1; ++i)
-    printf(")");
-  printf("\n");
-}
-
-static mp_limb_t
-call_mulredc (int N, mp_limb_t *z, mp_limb_t *x, mp_limb_t *y, mp_limb_t *m,
-              mp_limb_t invm)
-{
-  mp_limb_t cy;
-
-  switch (N) 
-    {
-     case 1:
-      cy = mulredc1(z, x[0], y[0], m[0], invm);
-      break;
-     case 2:
-      cy = mulredc2(z, x, y, m, invm);
-      break;
-     case 3:
-      cy = mulredc3(z, x, y, m, invm);
-      break;
-     case 4:
-      cy = mulredc4(z, x, y, m, invm);
-      break;
-     case 5:
-      cy = mulredc5(z, x, y, m, invm);
-      break;
-     case 6:
-      cy = mulredc6(z, x, y, m, invm);
-      break;
-     case 7:
-      cy = mulredc7(z, x, y, m, invm);
-      break;
-     case 8:
-      cy = mulredc8(z, x, y, m, invm);
-      break;
-     case 9:
-      cy = mulredc9(z, x, y, m, invm);
-      break;
-     case 10:
-      cy = mulredc10(z, x, y, m, invm);
-      break;
-     case 11:
-      cy = mulredc11(z, x, y, m, invm);
-      break;
-     case 12:
-      cy = mulredc12(z, x, y, m, invm);
-      break;
-     case 13:
-      cy = mulredc13(z, x, y, m, invm);
-      break;
-     case 14:
-      cy = mulredc14(z, x, y, m, invm);
-      break;
-     case 15:
-      cy = mulredc15(z, x, y, m, invm);
-      break;
-     case 16:
-      cy = mulredc16(z, x, y, m, invm);
-      break;
-     case 17:
-      cy = mulredc17(z, x, y, m, invm);
-      break;
-     case 18:
-      cy = mulredc18(z, x, y, m, invm);
-      break;
-     case 19:
-      cy = mulredc19(z, x, y, m, invm);
-      break;
-     case 20:
-      cy = mulredc20(z, x, y, m, invm);
-      break;
-     default:
-      cy = mulredc20(z, x, y, m, invm);
-    }
-  return cy;
-}
-
-void test(mp_size_t N, int k)
-{
-  mp_limb_t *x, *y, *yp, *z, *m, invm, cy, cy2, *tmp, *tmp2, *tmp3;
-  int i, j;
-  
-  x = (mp_limb_t *) malloc(N*sizeof(mp_limb_t));
-  y = (mp_limb_t *) malloc(N*sizeof(mp_limb_t));
-  z = (mp_limb_t *) malloc((N+1)*sizeof(mp_limb_t));
-  m = (mp_limb_t *) malloc(N*sizeof(mp_limb_t));
-  tmp = (mp_limb_t *) malloc((2*N+2)*sizeof(mp_limb_t));
-  tmp2 = (mp_limb_t *) malloc((2*N+2)*sizeof(mp_limb_t));
-  tmp3 = (mp_limb_t *) malloc((2*N+2)*sizeof(mp_limb_t));
- 
-  if (x == NULL || y == NULL || z == NULL || m == NULL || tmp == NULL ||
-      tmp2 == NULL || tmp3 == NULL)
-    {
-      fprintf (stderr, "Cannot allocate memory in test_mulredc\n");
-      exit (1);
-    }
-
-  mpn_random2(m, N);
-  m[0] |= 1UL;
-  if (m[N-1] == 0) 
-    m[N-1] = 1UL;
-
-  invm = 1UL;
-  for (i = 0; i < 10; ++i)
-    invm = (2*invm-m[0]*invm*invm);
-  invm = -invm;
-
-  assert( (invm*m[0] +1UL) == 0UL);
-  
-  yp = y;
-  for (i=0; i < k; ++i) {
-    /* Try a few special cases */
-    if (i == 0)
-    {
-      /* Try all 0, product should be 0 */
-      for (j = 0; j < N; j++)
-        x[j] = y[j] = 0;
-    }
-    else if (i == 1)
-    {
-      /* Try all 1 */
-      for (j = 0; j < N; j++)
-        x[j] = y[j] = 1;
-    }
-    else if (i == 2)
-    {
-      /* Try all 2^wordsize - 1 */
-      for (j = 0; j < N; j++)
-        x[j] = y[j] = ~(0UL);
-    } 
-    else 
-    {
-      /* In the other cases, try random data */
-      if (i % 2 == 0)
-        {
-          /* Try squaring */
-          mpn_random2(x, N);
-          yp = x;
-        }
-      else
-        {
-          /* Try multiplication */
-          mpn_random2(x, N);
-          mpn_random2(y, N);
-        }
-    }
-    
-    // Mul followed by ecm_redc3
-    mpn_mul_n(tmp, x, yp, N);
-    ecm_redc3(tmp, m, N, invm);
-    cy2 = mpn_add_n (tmp2, tmp + N, tmp, N);
-
-    // Mixed mul and redc
-    cy = call_mulredc (N, z, x, yp, m, invm);
-    
-    if (cy != cy2)
-      printf ("i = %d: mulredc cy = %ld, mpn_mul_n/ecm_redc3 cy = %ld\n", 
-              i, (long) cy, (long) cy2);
-    assert (cy == cy2);
-    if (mpn_cmp(z,tmp2, N) != 0)
-      {
-        printf ("i = %d\nmulredc             = ", i);
-        for (j = N - 1; j >= 0; j--)
-          printf ("%lx ", z[j]);
-        printf ("\nmpn_mul_n/ecm_redc3 = ");
-        for (j = N - 1; j >= 0; j--)
-          printf ("%lx ", tmp2[j]);
-        printf ("\n");
-        assert (mpn_cmp(z,tmp2, N) == 0);
-      }
-
-    if (cy)
-      printf("!");
-    z[N] = cy;
-    // Check with pure gmp : multiply by 2^(N*GMP_NUMB_BITS) and compare.
-    for (j=0; j < N; ++j) {
-      tmp[j] = 0;
-      tmp[j+N] = z[j]; 
-    }
-    tmp[2*N] = z[N];
-    mpn_tdiv_qr(tmp2, tmp3, 0, tmp, 2*N+1, m, N);
-    for (j=0; j < N; ++j)
-      z[j] = tmp3[j]; 
-
-    mpn_mul_n(tmp, x, yp, N);
-    mpn_tdiv_qr(tmp2, tmp3, 0, tmp, 2*N, m, N);
-    
-    assert(mpn_cmp(z, tmp3, N) == 0);
-  }
-  
-  free(tmp); free(tmp2); free(tmp3);
-  free(x); free(y); free(z); free(m);
-}
-  
-
-
-int main(int argc, char** argv)
-{
-  int i, len;
-
-  if (argc > 1) /* Test a specific length */
-  {
-    len = atoi (argv[1]);
-    for (i = 0; i < 1; i++)
-      test (len, 1000000);
-    return 0;
-  }
-
-  for (;;) {
-    for (i = 1; i <= 20; ++i) {
-      test(i, 1000);
-    }
-#if 0
-    test(1, 1000);
-    test(2, 1000);
-    test(3, 1000);
-    test(4, 1000);
-    test(5, 1000);
-    test(6, 1000);
-    test(7, 1000);
-    test(8, 1000);
-    test(9, 1000);
-    test(10, 1000);
-    test(11, 1000);
-    test(12, 1000);
-    test(13, 100);
-    test(14, 100);
-    test(15, 100);
-    test(16, 100);
-    test(17, 100);
-    test(18, 100);
-    test(44, 10);
-    test(45, 10);
-    test(46, 10);
-    test(47, 10);
-    test(48, 10);
-    test(49, 10);
-#endif
-    printf("."); fflush(stdout);
-  }
-#if 0  
-  x[0] = 12580274668139321508UL;
-  x[1] = 9205793975152560417UL;
-  x[2] = 7857372727033793057UL;
-
-  y[0] = 13688385828267279103UL;
-  y[1] = 10575011835742767258UL;
-  y[2] = 8802048318027595690UL;
-
-  
-  m[0] = 2981542467342508025UL;
-  m[1] = 5964669706257742025UL;
-  m[2] = 18446744073678090270UL;
-
-  invm = 9419286575570128311UL;
-
-  carry = mulredc(z, x, y, m, 3, invm);
-
-  printf("%lu + 2^64*(%lu + 2^64*%lu), carry=%lu\n", z[0], z[1], z[2], carry);
-#endif
-  return 0;
-}
-
-
-#if 0
-
-W := 2^64;
-
-x0:= 12580274668139321508;
-x1:= 9205793975152560417;
-x2:= 7857372727033793057;
-x := x0 + W*(x1 + W*x2);
-
-y0:= 13688385828267279103;
-y1:= 10575011835742767258;
-y2:= 8802048318027595690;
-y := y0 + W*(y1 + W*y2);
-  
-m0:= 2981542467342508025;
-m1:= 5964669706257742025;
-m2:= 18446744073678090270;
-m := m0 + W*(m1 + W*m2);
-  
-invm := 9419286575570128311;
-
-
-
-#endif
diff --git a/build.vc15/bench_mulredc/Makefile.am b/build.vc15/bench_mulredc/Makefile.am
deleted file mode 100644
index 5a7c0bc7..00000000
--- a/build.vc15/bench_mulredc/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = bench_mulredc.vcxproj bench_mulredc.vcxproj.filters
diff --git a/build.vc15/bench_mulredc/bench_mulredc.vcxproj b/build.vc15/bench_mulredc/bench_mulredc.vcxproj
deleted file mode 100644
index cd4daa80..00000000
--- a/build.vc15/bench_mulredc/bench_mulredc.vcxproj
+++ /dev/null
@@ -1,171 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{4727DE12-787D-432D-B166-BF103B0C3C87}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <RootNamespace>bench_mulredc</RootNamespace>
-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <LinkIncremental>true</LinkIncremental>
-    <OutDir>$(SolutionDir)..bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <LinkIncremental>true</LinkIncremental>
-    <OutDir>$(SolutionDir)..bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <LinkIncremental>false</LinkIncremental>
-    <OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <LinkIncremental>false</LinkIncremental>
-    <OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)$(IntDir);..\..\;..\assembler;..\</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>psapi.lib;..\..\..\$(mp_dir)$(IntDir)\mpir.lib;..\..\lib\$(IntDir)\libecm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)$(IntDir);..\..\;..\assembler;..\</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>psapi.lib;..\..\..\$(mp_dir)$(IntDir)\mpir.lib;..\..\lib\$(IntDir)\libecm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)$(IntDir);..\..\;..\assembler;..\</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>psapi.lib;..\..\..\$(mp_dir)$(IntDir)\mpir.lib;..\..\lib\$(IntDir)\libecm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>_WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)$(IntDir);..\..\;..\assembler;..\</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>psapi.lib;..\..\..\$(mp_dir)$(IntDir)\mpir.lib;..\..\lib\$(IntDir)\libecm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\bench_mulredc.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc15/bench_mulredc/bench_mulredc.vcxproj.filters b/build.vc15/bench_mulredc/bench_mulredc.vcxproj.filters
deleted file mode 100644
index 5e88a3d4..00000000
--- a/build.vc15/bench_mulredc/bench_mulredc.vcxproj.filters
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\bench_mulredc.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc15/config.h b/build.vc15/config.h
deleted file mode 100644
index 67936b0a..00000000
--- a/build.vc15/config.h
+++ /dev/null
@@ -1,246 +0,0 @@
-/* config.h.in.  Generated from configure.in by autoheader.  */
-
-#define VERSION ECM_VERSION
-
-#define VERSION_GPU "gpu_ecm-win"
-
-#define PACKAGE_BUGREPORT "ecm-discuss@inria.fr"
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
-   systems. This function is required for `alloca.c' support on those systems.
-   */
-#undef CRAY_STACKSEG_END
-
-/* Define to 1 if using `alloca.c'. */
-#define C_ALLOCA 1
-
-/* Define to 1 if you have the `access' function. */
-#undef HAVE_ACCESS
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-#define HAVE_ALLOCA 1
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-   */
-#undef HAVE_ALLOCA_H
-
-/* Define to 1 if you have the `ctime' function. */
-#define HAVE_CTIME 1
-
-/* Define to 1 if you have the <ctype.h> header file. */
-#define HAVE_CTYPE_H 1
-
-/* Define to 1 if you have the `floor' function. */
-#define HAVE_FLOOR 1
-
-/* Define to 1 if you have the `fmod' function. */
-#define HAVE_FMOD 1
-
-/* Define to 1 if you have the `gethostname' function. */
-#define HAVE_GETHOSTNAME 1
-
-/* Define to 1 if you have the `getrusage' function. */
-#define HAVE_GETRUSAGE   1
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#undef HAVE_GETTIMEOFDAY
-
-/* Define to 1 if you have the <gmp.h> header file. */
-#define HAVE_GMP_H 1
-
-/* Define to 1 if gwnum.a or gwnum.lib exist */
-#undef HAVE_GWNUM
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the <io.h> header file. */
-#undef HAVE_IO_H
-
-/* Define to 1 if you have the `isascii' function. */
-#undef HAVE_ISASCII
-
-/* Define to 1 if you have the `isdigit' function. */
-#define HAVE_ISDIGIT 1
-
-/* Define to 1 if you have the `isspace' function. */
-#define HAVE_ISSPACE 1
-
-/* Define to 1 if you have the `isxdigit' function. */
-#define HAVE_ISXDIGIT 1
-
-/* Define to 1 if you have the `m' library (-lm). */
-#undef HAVE_LIBM
-
-/* Define to 1 if you have the <limits.h> header file. */
-#define HAVE_LIMITS_H 1
-
-/* Define to 1 if you have the <malloc.h> header file. */
-#define HAVE_MALLOC_H 1
- 
-/* Define to 1 if you have the `malloc_usable_size' function. */
-#undef HAVE_MALLOC_USABLE_SIZE
-
-/* Define to 1 if you have the <math.h> header file. */
-#define HAVE_MATH_H 1
-
-/* Define to 1 if you have the `memmove' function. */
-#define HAVE_MEMMOVE 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `memset' function. */
-#define HAVE_MEMSET 1
-
-/* Define to 1 if you have the `nice' function. */
-#undef HAVE_NICE
-
-/* Define to 1 if you have the `pow' function. */
-#define HAVE_POW 1
-
-/* Define to 1 if you have the `signal' function. */
-#define HAVE_SIGNAL 1
-
-/* Define to 1 if you have the <signal.h> header file. */
-#define HAVE_SIGNAL_H 1
-
-/* Define to 1 if you have the `sqrt' function. */
-#define HAVE_SQRT 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the `strchr' function. */
-#define HAVE_STRCHR 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `strlen' function. */
-#define HAVE_STRLEN 1
-
-/* Define to 1 if you have the `strncasecmp' function. */
-#undef HAVE_STRNCASECMP
-
-/* Define to 1 if you have the `strstr' function. */
-#undef HAVE_STRSTR
-
-/* Define to 1 if you have the <sys/resource.h> header file. */
-#undef HAVE_SYS_RESOURCE_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the `time' function. */
-#undef HAVE_TIME
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the `unlink' function. */
-#define HAVE_UNLINK 1
-
-/* Define to 1 if you have the <windows.h> header file. */
-#define HAVE_WINDOWS_H 1
-
-/* Define to 1 if you have the `__gmpn_add_nc' function. */
-#if defined( _WIN64 )
-#  define HAVE___GMPN_ADD_NC 1
-#endif
-
-/* Define to 1 if you have the `__gmpn_mod_34lsub1' function. */
-#define HAVE___GMPN_MOD_34LSUB1 1
-
-/* Define to 1 if you have the `__gmpn_mul_fft' function. */
-#define HAVE___GMPN_MUL_FFT 1
-
-/* Define to 1 if you want memory debugging */
-#undef MEMORY_DEBUG
-
-/* Define if the system has the type `long long'. */
-#define HAVE_LONG_LONG		1
-#define HAVE_LONG_LONG_INT  1
-
-/* Define to 1 to use asm redc on x86 or x86_64 */
-#  define NATIVE_REDC   1         
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
-
-/* If using the C implementation of alloca, define if you know the
-   direction of stack growth for your system; otherwise it will be
-   automatically deduced at runtime.
-	STACK_DIRECTION > 0 => grows toward higher addresses
-	STACK_DIRECTION < 0 => grows toward lower addresses
-	STACK_DIRECTION = 0 => direction of growth unknown */
-#undef STACK_DIRECTION
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Define to 1 if you want assertions enabled */
-#undef WANT_ASSERT
-
-/* Define to 1 if you want shell command execution */
-#undef WANT_SHELLCMD
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* How to specify hot-spot attribute, if available */
-#define ATTRIBUTE_HOT
-
-#define HAVE___GMPN_REDC_1 1
-
-#define HAVE___GMPN_REDC_2 1
-
-#define HAVE_ASM_REDC3  1
-
-#define WINDOWS64_ABI   1
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
-   calls it, or to nothing if 'inline' is not supported under any name.  */
-#ifndef __cplusplus
-#define inline __inline
-#endif
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
-
-#define PRIdSIZE "Id"
-#define PRIuSIZE "Iu"
-
-#ifdef _MSC_VER
-
-#define __func__ __FUNCTION__
-
-/* define Windows tuning here */
-#  define __tune_corei7__
-
-#  if _MSC_VER < 1600
-#    define int64_t     __int64
-#    define uint64_t    unsigned __int64
-#  endif
-#  define strncasecmp strnicmp
-#  define access       _access 
-#  define alloca      _alloca
-#  define fseek64     _fseek64
-#  define ftell64     _ftell64
-#  define omp_get_thread_limit omp_get_max_threads
-#endif
diff --git a/build.vc15/ecm.sln b/build.vc15/ecm.sln
deleted file mode 100644
index e5543917..00000000
--- a/build.vc15/ecm.sln
+++ /dev/null
@@ -1,70 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.24720.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libecm", "libecm\libecm.vcxproj", "{CD555681-D65B-4173-A29C-B8BF06A4871B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ecm", "ecm\ecm.vcxproj", "{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tune", "tune\tune.vcxproj", "{80E08750-5C6C-492E-BB1E-7200978AE125}"
-	ProjectSection(ProjectDependencies) = postProject
-		{CD555681-D65B-4173-A29C-B8BF06A4871B} = {CD555681-D65B-4173-A29C-B8BF06A4871B}
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187} = {C0E2EA85-996A-4B5F-AD30-590FAF5B7187}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bench_mulredc", "bench_mulredc\bench_mulredc.vcxproj", "{4727DE12-787D-432D-B166-BF103B0C3C87}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multiecm", "multiecm\multiecm.vcxproj", "{16434DC2-371C-451B-A336-820499B98B8C}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Debug|Win32.ActiveCfg = Debug|Win32
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Debug|Win32.Build.0 = Debug|Win32
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Debug|x64.ActiveCfg = Debug|x64
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Debug|x64.Build.0 = Debug|x64
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Release|Win32.ActiveCfg = Release|Win32
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Release|Win32.Build.0 = Release|Win32
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Release|x64.ActiveCfg = Release|x64
-		{CD555681-D65B-4173-A29C-B8BF06A4871B}.Release|x64.Build.0 = Release|x64
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Debug|Win32.Build.0 = Debug|Win32
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Debug|x64.ActiveCfg = Debug|x64
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Debug|x64.Build.0 = Debug|x64
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Release|Win32.ActiveCfg = Release|Win32
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Release|Win32.Build.0 = Release|Win32
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Release|x64.ActiveCfg = Release|x64
-		{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}.Release|x64.Build.0 = Release|x64
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Debug|Win32.ActiveCfg = Release|x64
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Debug|x64.ActiveCfg = Release|x64
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Debug|x64.Build.0 = Release|x64
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Release|Win32.ActiveCfg = Release|Win32
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Release|Win32.Build.0 = Release|Win32
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Release|x64.ActiveCfg = Release|x64
-		{80E08750-5C6C-492E-BB1E-7200978AE125}.Release|x64.Build.0 = Release|x64
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Debug|Win32.ActiveCfg = Debug|Win32
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Debug|Win32.Build.0 = Debug|Win32
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Debug|x64.ActiveCfg = Debug|x64
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Debug|x64.Build.0 = Debug|x64
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Release|Win32.ActiveCfg = Release|Win32
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Release|Win32.Build.0 = Release|Win32
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Release|x64.ActiveCfg = Release|x64
-		{4727DE12-787D-432D-B166-BF103B0C3C87}.Release|x64.Build.0 = Release|x64
-		{16434DC2-371C-451B-A336-820499B98B8C}.Debug|Win32.ActiveCfg = Debug|Win32
-		{16434DC2-371C-451B-A336-820499B98B8C}.Debug|Win32.Build.0 = Debug|Win32
-		{16434DC2-371C-451B-A336-820499B98B8C}.Debug|x64.ActiveCfg = Debug|x64
-		{16434DC2-371C-451B-A336-820499B98B8C}.Debug|x64.Build.0 = Debug|x64
-		{16434DC2-371C-451B-A336-820499B98B8C}.Release|Win32.ActiveCfg = Release|Win32
-		{16434DC2-371C-451B-A336-820499B98B8C}.Release|Win32.Build.0 = Release|Win32
-		{16434DC2-371C-451B-A336-820499B98B8C}.Release|x64.ActiveCfg = Release|x64
-		{16434DC2-371C-451B-A336-820499B98B8C}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/build.vc15/ecm/Makefile.am b/build.vc15/ecm/Makefile.am
deleted file mode 100644
index 2f05e85c..00000000
--- a/build.vc15/ecm/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = ecm.vcxproj ecm.vcxproj.filters
diff --git a/build.vc15/ecm/ecm.vcxproj b/build.vc15/ecm/ecm.vcxproj
deleted file mode 100644
index 2ad6bf2b..00000000
--- a/build.vc15/ecm/ecm.vcxproj
+++ /dev/null
@@ -1,240 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{C0E2EA85-996A-4B5F-AD30-590FAF5B7187}</ProjectGuid>
-    <RootNamespace>ecm</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="..\vsyasm.props" />
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 9.2.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;NDEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;..\..\..\$(mp_dir)lib\$(Platform)\release\$(mp_lib);%(AdditionalDependencies)</AdditionalDependencies>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <StackReserveSize>8388608</StackReserveSize>
-      <StackCommitSize>65536</StackCommitSize>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;_DEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <StackReserveSize>8388608</StackReserveSize>
-      <StackCommitSize>65536</StackCommitSize>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\aprtcle\mpz_aprcl.c" />
-    <ClCompile Include="..\..\auxi.c" />
-    <ClCompile Include="..\..\b1_ainc.c" />
-    <ClCompile Include="..\..\candi.c" />
-    <ClCompile Include="..\..\eval.c" />
-    <ClCompile Include="..\..\getprime_r.c" />
-    <ClCompile Include="..\..\main.c" />
-    <ClCompile Include="..\..\memusage.c" />
-    <ClCompile Include="..\..\resume.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-    <ClInclude Include="..\..\champions.h" />
-    <ClInclude Include="..\..\ecm-ecm.h" />
-    <ClInclude Include="..\..\ecm-gmp.h" />
-    <ClInclude Include="..\..\ecm-impl.h" />
-    <ClInclude Include="..\..\ecm-params.h" />
-    <ClInclude Include="..\..\ecm.h" />
-    <ClInclude Include="..\..\getprime_r.h" />
-    <ClInclude Include="..\..\longlong.h" />
-    <ClInclude Include="..\config.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libecm\libecm.vcxproj">
-      <Project>{cd555681-d65b-4173-a29c-b8bf06a4871b}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="..\vsyasm.targets" />
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 9.2.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc15/ecm/ecm.vcxproj.filters b/build.vc15/ecm/ecm.vcxproj.filters
deleted file mode 100644
index a806e09e..00000000
--- a/build.vc15/ecm/ecm.vcxproj.filters
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\b1_ainc.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\candi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\eval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\main.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\resume.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\memusage.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\getprime_r.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\aprtcle\mpz_aprcl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\champions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\getprime_r.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc15/ecm_gpu.sln b/build.vc15/ecm_gpu.sln
deleted file mode 100644
index 87325a62..00000000
--- a/build.vc15/ecm_gpu.sln
+++ /dev/null
@@ -1,39 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2012
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libecm_gpu", "libecm_gpu\libecm_gpu.vcxproj", "{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ecm_gpu", "ecm_gpu\ecm_gpu.vcxproj", "{1B353D8B-9808-4EB3-A5E7-075D751757AD}"
-	ProjectSection(ProjectDependencies) = postProject
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00} = {3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Debug|Win32.Build.0 = Debug|Win32
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Debug|x64.ActiveCfg = Debug|x64
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Debug|x64.Build.0 = Debug|x64
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Release|Win32.ActiveCfg = Release|Win32
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Release|Win32.Build.0 = Release|Win32
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Release|x64.ActiveCfg = Release|x64
-		{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}.Release|x64.Build.0 = Release|x64
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Debug|Win32.ActiveCfg = Debug|Win32
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Debug|Win32.Build.0 = Debug|Win32
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Debug|x64.ActiveCfg = Debug|x64
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Debug|x64.Build.0 = Debug|x64
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Release|Win32.ActiveCfg = Release|Win32
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Release|Win32.Build.0 = Release|Win32
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Release|x64.ActiveCfg = Release|x64
-		{1B353D8B-9808-4EB3-A5E7-075D751757AD}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/build.vc15/ecm_gpu/Makefile.am b/build.vc15/ecm_gpu/Makefile.am
deleted file mode 100644
index 0b43ffe2..00000000
--- a/build.vc15/ecm_gpu/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = ecm_gpu.vcxproj ecm_gpu.vcxproj.filters libecm_gpu.vcxproj libecm_gpu.vcxproj.filters
diff --git a/build.vc15/ecm_gpu/ecm.vcxproj.filters b/build.vc15/ecm_gpu/ecm.vcxproj.filters
deleted file mode 100644
index f3880aba..00000000
--- a/build.vc15/ecm_gpu/ecm.vcxproj.filters
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\b1_ainc.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\candi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\eval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\getprime.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\main.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\random.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\resume.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\champions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc15/ecm_gpu/ecm_gpu.vcxproj b/build.vc15/ecm_gpu/ecm_gpu.vcxproj
deleted file mode 100644
index 3752b8b8..00000000
--- a/build.vc15/ecm_gpu/ecm_gpu.vcxproj
+++ /dev/null
@@ -1,280 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{1B353D8B-9808-4EB3-A5E7-075D751757AD}</ProjectGuid>
-    <RootNamespace>ecm_gpu</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 10.1.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC50;NDEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)$(IntDir)$(mp_lib);..\..\lib\$(IntDir)libecm_gpu.lib;advapi32.lib;ws2_32.lib;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\$(Platform)\cudart.lib</AdditionalDependencies>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>NotSet</TargetMachine>
-    </Link>
-    <CudaCompile>
-      <CodeGeneration>compute_50,sm_50</CodeGeneration>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <TargetMachinePlatform>32</TargetMachinePlatform>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <Defines>
-      </Defines>
-    </CudaCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC50;_WIN64;NDEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;..\..\..\$(mp_dir)lib\$(Platform)\release\$(mp_lib);%(AdditionalDependencies)</AdditionalDependencies>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>NotSet</TargetMachine>
-      <StackReserveSize>8388608</StackReserveSize>
-      <StackCommitSize>65536</StackCommitSize>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC50;_DEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)$(IntDir)$(mp_lib);..\..\lib\$(IntDir)libecm_gpu.lib;advapi32.lib;ws2_32.lib;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\$(Platform)\cudart.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>NotSet</TargetMachine>
-    </Link>
-    <CudaCompile>
-      <CodeGeneration>compute_50,sm_50</CodeGeneration>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <TargetMachinePlatform>32</TargetMachinePlatform>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <Defines>
-      </Defines>
-    </CudaCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC50;_WIN64;_DEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)$(IntDir)$(mp_lib);..\..\lib\$(IntDir)libecm_gpu.lib;advapi32.lib;ws2_32.lib;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\$(Platform)\cudart.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>NotSet</TargetMachine>
-      <StackReserveSize>8388608</StackReserveSize>
-      <StackCommitSize>65536</StackCommitSize>
-    </Link>
-    <CudaCompile>
-      <CodeGeneration>compute_50,sm_50</CodeGeneration>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <TargetMachinePlatform>64</TargetMachinePlatform>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <Defines>
-      </Defines>
-    </CudaCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)$(IntDir)$(mp_lib);..\..\lib\$(IntDir)libecm_gpu.lib;advapi32.lib;ws2_32.lib;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\$(Platform)\cudart.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-    <CudaCompile>
-      <CodeGeneration>compute_50,sm_50</CodeGeneration>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <TargetMachinePlatform>64</TargetMachinePlatform>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <Defines>
-      </Defines>
-    </CudaCompile>
-    <CudaLink>
-      <AdditionalDependencies>
-      </AdditionalDependencies>
-    </CudaLink>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxi.c" />
-    <ClCompile Include="..\..\b1_ainc.c" />
-    <ClCompile Include="..\..\candi.c" />
-    <ClCompile Include="..\..\eval.c" />
-    <ClCompile Include="..\..\getprime_r.c" />
-    <ClCompile Include="..\..\main.c" />
-    <ClCompile Include="..\..\memusage.c" />
-    <ClCompile Include="..\..\random.c" />
-    <ClCompile Include="..\..\resume.c" />
-    <ClCompile Include="..\vacopy.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-    <ClInclude Include="..\..\champions.h" />
-    <ClInclude Include="..\..\config.h" />
-    <ClInclude Include="..\..\ecm-ecm.h" />
-    <ClInclude Include="..\..\ecm-gmp.h" />
-    <ClInclude Include="..\..\ecm-impl.h" />
-    <ClInclude Include="..\..\ecm-params.h" />
-    <ClInclude Include="..\..\ecm.h" />
-    <ClInclude Include="..\..\getprime_r.h" />
-    <ClInclude Include="..\..\longlong.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <Object Include="..\fto13.obj">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </Object>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 10.1.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc15/ecm_gpu/ecm_gpu.vcxproj.filters b/build.vc15/ecm_gpu/ecm_gpu.vcxproj.filters
deleted file mode 100644
index 1357d945..00000000
--- a/build.vc15/ecm_gpu/ecm_gpu.vcxproj.filters
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <ClCompile Include="..\vacopy.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\auxi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\b1_ainc.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\candi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\eval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\main.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\random.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\resume.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\getprime_r.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\memusage.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\champions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\getprime_r.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{2a13feaf-0c0e-469a-8047-82c647322da9}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{163547c7-89d7-4ddc-b0ad-02b4cfd722b4}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <Object Include="..\fto13.obj" />
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc15/file_copy.bat b/build.vc15/file_copy.bat
deleted file mode 100644
index dcb84ef9..00000000
--- a/build.vc15/file_copy.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-if not exist %1 ( echo file_copy failure: %1 not found && goto exit )
-if exist %2     ( fc %1 %2 > nul && if not %errorlevel 1 goto exit )
-echo copying %1 to %2 && copy %1 %2
-:exit
diff --git a/build.vc15/gen_ecm_h.bat b/build.vc15/gen_ecm_h.bat
deleted file mode 100644
index 280470d5..00000000
--- a/build.vc15/gen_ecm_h.bat
+++ /dev/null
@@ -1,13 +0,0 @@
-@echo off
-echo creating ecm.h from ecm.h.in
-echo /* generated from ecm-h.in by gen_ecm_h.bat */>tmp.h
-
-for /f "tokens=1,2*" %%a in (..\ecm.h.in) do (
-  if "%%a" EQU "#undef" (
-    if "%%b" EQU "ECM_VERSION" (
-      echo #define ECM_VERSION "7.0.6-rc1">>tmp.h
-    )
-  ) else echo %%a %%b %%c>>tmp.h
-)
-
-call out_copy_rename tmp.h ..\ ecm.h
diff --git a/build.vc15/getopt.c b/build.vc15/getopt.c
deleted file mode 100644
index 1716d95b..00000000
--- a/build.vc15/getopt.c
+++ /dev/null
@@ -1,1281 +0,0 @@
-/* Getopt for GNU.
-   NOTE: getopt is now part of the C library, so if you don't know what
-   "Keep this file name-space clean" means, talk to drepper@gnu.org
-   before changing it!
-   Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002
-   	Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
-   Ditto for AIX 3.2 and <stdlib.h>.  */
-
-#define HAVE_STRING_H	1
-
-#ifndef _NO_PROTO
-# define _NO_PROTO
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if !defined __STDC__ || !__STDC__
-/* This is a separate conditional since some stdc systems
-   reject `defined (const)'.  */
-# ifndef const
-#  define const
-# endif
-#endif
-
-#include <stdio.h>
-
-/* Comment out all this code if we are using the GNU C Library, and are not
-   actually compiling the library itself.  This code is part of the GNU C
-   Library, but also included in many other GNU distributions.  Compiling
-   and linking in this code is a waste when using the GNU C library
-   (especially if it is a shared library).  Rather than having every GNU
-   program understand `configure --with-gnu-libc' and omit the object files,
-   it is simpler to just do this in the source for each such file.  */
-
-#define GETOPT_INTERFACE_VERSION 2
-#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
-# include <gnu-versions.h>
-# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
-#  define ELIDE_CODE
-# endif
-#endif
-
-#ifndef ELIDE_CODE
-
-
-/* This needs to come after some library #include
-   to get __GNU_LIBRARY__ defined.  */
-#ifdef	__GNU_LIBRARY__
-/* Don't include stdlib.h for non-GNU C libraries because some of them
-   contain conflicting prototypes for getopt.  */
-# include <stdlib.h>
-# include <unistd.h>
-#endif	/* GNU C library.  */
-
-#ifdef VMS
-# include <unixlib.h>
-# if HAVE_STRING_H - 0
-#  include <string.h>
-# endif
-#endif
-
-#ifndef _
-/* This is for other GNU distributions with internationalized messages.  */
-# if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
-#  include <libintl.h>
-#  ifndef _
-#   define _(msgid)	gettext (msgid)
-#  endif
-# else
-#  define _(msgid)	(msgid)
-# endif
-# if defined _LIBC && defined USE_IN_LIBIO
-#  include <wchar.h>
-# endif
-#endif
-
-#ifndef attribute_hidden
-# define attribute_hidden
-#endif
-
-/* This version of `getopt' appears to the caller like standard Unix `getopt'
-   but it behaves differently for the user, since it allows the user
-   to intersperse the options with the other arguments.
-
-   As `getopt' works, it permutes the elements of ARGV so that,
-   when it is done, all the options precede everything else.  Thus
-   all application programs are extended to handle flexible argument order.
-
-   Setting the environment variable POSIXLY_CORRECT disables permutation.
-   Then the behavior is completely standard.
-
-   GNU application programs can use a third alternative mode in which
-   they can distinguish the relative order of options and other arguments.  */
-
-#include "getopt.h"
-
-/* For communication from `getopt' to the caller.
-   When `getopt' finds an option that takes an argument,
-   the argument value is returned here.
-   Also, when `ordering' is RETURN_IN_ORDER,
-   each non-option ARGV-element is returned here.  */
-
-char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
-   This is used for communication to and from the caller
-   and for communication between successive calls to `getopt'.
-
-   On entry to `getopt', zero means this is the first call; initialize.
-
-   When `getopt' returns -1, this is the index of the first of the
-   non-option elements that the caller should itself scan.
-
-   Otherwise, `optind' communicates from one call to the next
-   how much of ARGV has been scanned so far.  */
-
-/* 1003.2 says this must be 1 before any call.  */
-int optind = 1;
-
-/* Formerly, initialization of getopt depended on optind==0, which
-   causes problems with re-calling getopt as programs generally don't
-   know that. */
-
-int __getopt_initialized attribute_hidden;
-
-/* The next char to be scanned in the option-element
-   in which the last option character we returned was found.
-   This allows us to pick up the scan where we left off.
-
-   If this is zero, or a null string, it means resume the scan
-   by advancing to the next ARGV-element.  */
-
-static char *nextchar;
-
-/* Callers store zero here to inhibit the error message
-   for unrecognized options.  */
-
-int opterr = 1;
-
-/* Set to an option character which was unrecognized.
-   This must be initialized on some systems to avoid linking in the
-   system's own getopt implementation.  */
-
-int optopt = '?';
-
-/* Describe how to deal with options that follow non-option ARGV-elements.
-
-   If the caller did not specify anything,
-   the default is REQUIRE_ORDER if the environment variable
-   POSIXLY_CORRECT is defined, PERMUTE otherwise.
-
-   REQUIRE_ORDER means don't recognize them as options;
-   stop option processing when the first non-option is seen.
-   This is what Unix does.
-   This mode of operation is selected by either setting the environment
-   variable POSIXLY_CORRECT, or using `+' as the first character
-   of the list of option characters.
-
-   PERMUTE is the default.  We permute the contents of ARGV as we scan,
-   so that eventually all the non-options are at the end.  This allows options
-   to be given in any order, even with programs that were not written to
-   expect this.
-
-   RETURN_IN_ORDER is an option available to programs that were written
-   to expect options and other ARGV-elements in any order and that care about
-   the ordering of the two.  We describe each non-option ARGV-element
-   as if it were the argument of an option with character code 1.
-   Using `-' as the first character of the list of option characters
-   selects this mode of operation.
-
-   The special argument `--' forces an end of option-scanning regardless
-   of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
-   `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
-
-static enum
-{
-  REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
-} ordering;
-
-/* Value of POSIXLY_CORRECT environment variable.  */
-static char *posixly_correct;
-
-#ifdef	__GNU_LIBRARY__
-/* We want to avoid inclusion of string.h with non-GNU libraries
-   because there are many ways it can cause trouble.
-   On some systems, it contains special magic macros that don't work
-   in GCC.  */
-# include <string.h>
-# define my_index	strchr
-#else
-
-# if HAVE_STRING_H
-#  include <string.h>
-# else
-#  include <strings.h>
-# endif
-
-/* Avoid depending on library functions or files
-   whose names are inconsistent.  */
-
-#ifndef getenv
-extern char *getenv ();
-#endif
-
-static char *
-my_index (str, chr)
-     const char *str;
-     int chr;
-{
-  while (*str)
-    {
-      if (*str == chr)
-	return (char *) str;
-      str++;
-    }
-  return 0;
-}
-
-/* If using GCC, we can safely declare strlen this way.
-   If not using GCC, it is ok not to declare it.  */
-#ifdef __GNUC__
-/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
-   That was relevant to code that was here before.  */
-# if (!defined __STDC__ || !__STDC__) && !defined strlen
-/* gcc with -traditional declares the built-in strlen to return int,
-   and has done so at least since version 2.4.5. -- rms.  */
-extern int strlen (const char *);
-# endif /* not __STDC__ */
-#endif /* __GNUC__ */
-
-#endif /* not __GNU_LIBRARY__ */
-
-/* Handle permutation of arguments.  */
-
-/* Describe the part of ARGV that contains non-options that have
-   been skipped.  `first_nonopt' is the index in ARGV of the first of them;
-   `last_nonopt' is the index after the last of them.  */
-
-static int first_nonopt;
-static int last_nonopt;
-
-#ifdef _LIBC
-/* Stored original parameters.
-   XXX This is no good solution.  We should rather copy the args so
-   that we can compare them later.  But we must not use malloc(3).  */
-extern int __libc_argc;
-extern char **__libc_argv;
-
-/* Bash 2.0 gives us an environment variable containing flags
-   indicating ARGV elements that should not be considered arguments.  */
-
-# ifdef USE_NONOPTION_FLAGS
-/* Defined in getopt_init.c  */
-extern char *__getopt_nonoption_flags;
-
-static int nonoption_flags_max_len;
-static int nonoption_flags_len;
-# endif
-
-# ifdef USE_NONOPTION_FLAGS
-#  define SWAP_FLAGS(ch1, ch2) \
-  if (nonoption_flags_len > 0)						      \
-    {									      \
-      char __tmp = __getopt_nonoption_flags[ch1];			      \
-      __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2];	      \
-      __getopt_nonoption_flags[ch2] = __tmp;				      \
-    }
-# else
-#  define SWAP_FLAGS(ch1, ch2)
-# endif
-#else	/* !_LIBC */
-# define SWAP_FLAGS(ch1, ch2)
-#endif	/* _LIBC */
-
-/* Exchange two adjacent subsequences of ARGV.
-   One subsequence is elements [first_nonopt,last_nonopt)
-   which contains all the non-options that have been skipped so far.
-   The other is elements [last_nonopt,optind), which contains all
-   the options processed since those non-options were skipped.
-
-   `first_nonopt' and `last_nonopt' are relocated so that they describe
-   the new indices of the non-options in ARGV after they are moved.  */
-
-#if defined __STDC__ && __STDC__
-static void exchange (char **);
-#endif
-
-static void
-exchange (argv)
-     char **argv;
-{
-  int bottom = first_nonopt;
-  int middle = last_nonopt;
-  int top = optind;
-  char *tem;
-
-  /* Exchange the shorter segment with the far end of the longer segment.
-     That puts the shorter segment into the right place.
-     It leaves the longer segment in the right place overall,
-     but it consists of two parts that need to be swapped next.  */
-
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
-  /* First make sure the handling of the `__getopt_nonoption_flags'
-     string can work normally.  Our top argument must be in the range
-     of the string.  */
-  if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
-    {
-      /* We must extend the array.  The user plays games with us and
-	 presents new arguments.  */
-      char *new_str = malloc (top + 1);
-      if (new_str == NULL)
-	nonoption_flags_len = nonoption_flags_max_len = 0;
-      else
-	{
-	  memset (__mempcpy (new_str, __getopt_nonoption_flags,
-			     nonoption_flags_max_len),
-		  '\0', top + 1 - nonoption_flags_max_len);
-	  nonoption_flags_max_len = top + 1;
-	  __getopt_nonoption_flags = new_str;
-	}
-    }
-#endif
-
-  while (top > middle && middle > bottom)
-    {
-      if (top - middle > middle - bottom)
-	{
-	  /* Bottom segment is the short one.  */
-	  int len = middle - bottom;
-	  register int i;
-
-	  /* Swap it with the top part of the top segment.  */
-	  for (i = 0; i < len; i++)
-	    {
-	      tem = argv[bottom + i];
-	      argv[bottom + i] = argv[top - (middle - bottom) + i];
-	      argv[top - (middle - bottom) + i] = tem;
-	      SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
-	    }
-	  /* Exclude the moved bottom segment from further swapping.  */
-	  top -= len;
-	}
-      else
-	{
-	  /* Top segment is the short one.  */
-	  int len = top - middle;
-	  register int i;
-
-	  /* Swap it with the bottom part of the bottom segment.  */
-	  for (i = 0; i < len; i++)
-	    {
-	      tem = argv[bottom + i];
-	      argv[bottom + i] = argv[middle + i];
-	      argv[middle + i] = tem;
-	      SWAP_FLAGS (bottom + i, middle + i);
-	    }
-	  /* Exclude the moved top segment from further swapping.  */
-	  bottom += len;
-	}
-    }
-
-  /* Update records for the slots the non-options now occupy.  */
-
-  first_nonopt += (optind - last_nonopt);
-  last_nonopt = optind;
-}
-
-/* Initialize the internal data when the first call is made.  */
-
-#if defined __STDC__ && __STDC__
-static const char *_getopt_initialize (int, char *const *, const char *);
-#endif
-static const char *
-_getopt_initialize (argc, argv, optstring)
-     int argc;
-     char *const *argv;
-     const char *optstring;
-{
-  /* Start processing options with ARGV-element 1 (since ARGV-element 0
-     is the program name); the sequence of previously skipped
-     non-option ARGV-elements is empty.  */
-
-  first_nonopt = last_nonopt = optind;
-
-  nextchar = NULL;
-
-  posixly_correct = getenv ("POSIXLY_CORRECT");
-
-  /* Determine how to handle the ordering of options and nonoptions.  */
-
-  if (optstring[0] == '-')
-    {
-      ordering = RETURN_IN_ORDER;
-      ++optstring;
-    }
-  else if (optstring[0] == '+')
-    {
-      ordering = REQUIRE_ORDER;
-      ++optstring;
-    }
-  else if (posixly_correct != NULL)
-    ordering = REQUIRE_ORDER;
-  else
-    ordering = PERMUTE;
-
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
-  if (posixly_correct == NULL
-      && argc == __libc_argc && argv == __libc_argv)
-    {
-      if (nonoption_flags_max_len == 0)
-	{
-	  if (__getopt_nonoption_flags == NULL
-	      || __getopt_nonoption_flags[0] == '\0')
-	    nonoption_flags_max_len = -1;
-	  else
-	    {
-	      const char *orig_str = __getopt_nonoption_flags;
-	      int len = nonoption_flags_max_len = strlen (orig_str);
-	      if (nonoption_flags_max_len < argc)
-		nonoption_flags_max_len = argc;
-	      __getopt_nonoption_flags =
-		(char *) malloc (nonoption_flags_max_len);
-	      if (__getopt_nonoption_flags == NULL)
-		nonoption_flags_max_len = -1;
-	      else
-		memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
-			'\0', nonoption_flags_max_len - len);
-	    }
-	}
-      nonoption_flags_len = nonoption_flags_max_len;
-    }
-  else
-    nonoption_flags_len = 0;
-#endif
-
-  return optstring;
-}
-
-/* Scan elements of ARGV (whose length is ARGC) for option characters
-   given in OPTSTRING.
-
-   If an element of ARGV starts with '-', and is not exactly "-" or "--",
-   then it is an option element.  The characters of this element
-   (aside from the initial '-') are option characters.  If `getopt'
-   is called repeatedly, it returns successively each of the option characters
-   from each of the option elements.
-
-   If `getopt' finds another option character, it returns that character,
-   updating `optind' and `nextchar' so that the next call to `getopt' can
-   resume the scan with the following option character or ARGV-element.
-
-   If there are no more option characters, `getopt' returns -1.
-   Then `optind' is the index in ARGV of the first ARGV-element
-   that is not an option.  (The ARGV-elements have been permuted
-   so that those that are not options now come last.)
-
-   OPTSTRING is a string containing the legitimate option characters.
-   If an option character is seen that is not listed in OPTSTRING,
-   return '?' after printing an error message.  If you set `opterr' to
-   zero, the error message is suppressed but we still return '?'.
-
-   If a char in OPTSTRING is followed by a colon, that means it wants an arg,
-   so the following text in the same ARGV-element, or the text of the following
-   ARGV-element, is returned in `optarg'.  Two colons mean an option that
-   wants an optional arg; if there is text in the current ARGV-element,
-   it is returned in `optarg', otherwise `optarg' is set to zero.
-
-   If OPTSTRING starts with `-' or `+', it requests different methods of
-   handling the non-option ARGV-elements.
-   See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
-
-   Long-named options begin with `--' instead of `-'.
-   Their names may be abbreviated as long as the abbreviation is unique
-   or is an exact match for some defined option.  If they have an
-   argument, it follows the option name in the same ARGV-element, separated
-   from the option name by a `=', or else the in next ARGV-element.
-   When `getopt' finds a long-named option, it returns 0 if that option's
-   `flag' field is nonzero, the value of the option's `val' field
-   if the `flag' field is zero.
-
-   The elements of ARGV aren't really const, because we permute them.
-   But we pretend they're const in the prototype to be compatible
-   with other systems.
-
-   LONGOPTS is a vector of `struct option' terminated by an
-   element containing a name which is zero.
-
-   LONGIND returns the index in LONGOPT of the long-named option found.
-   It is only valid when a long-named option has been found by the most
-   recent call.
-
-   If LONG_ONLY is nonzero, '-' as well as '--' can introduce
-   long-named options.  */
-
-int
-_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
-     int argc;
-     char *const *argv;
-     const char *optstring;
-     const struct option *longopts;
-     int *longind;
-     int long_only;
-{
-  int print_errors = opterr;
-  if (optstring[0] == ':')
-    print_errors = 0;
-
-  if (argc < 1)
-    return -1;
-
-  optarg = NULL;
-
-  if (optind == 0 || !__getopt_initialized)
-    {
-      if (optind == 0)
-	optind = 1;	/* Don't scan ARGV[0], the program name.  */
-      optstring = _getopt_initialize (argc, argv, optstring);
-      __getopt_initialized = 1;
-    }
-
-  /* Test whether ARGV[optind] points to a non-option argument.
-     Either it does not have option syntax, or there is an environment flag
-     from the shell indicating it is not an option.  The later information
-     is only used when the used in the GNU libc.  */
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
-# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0'	      \
-		      || (optind < nonoption_flags_len			      \
-			  && __getopt_nonoption_flags[optind] == '1'))
-#else
-# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
-#endif
-
-  if (nextchar == NULL || *nextchar == '\0')
-    {
-      /* Advance to the next ARGV-element.  */
-
-      /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
-	 moved back by the user (who may also have changed the arguments).  */
-      if (last_nonopt > optind)
-	last_nonopt = optind;
-      if (first_nonopt > optind)
-	first_nonopt = optind;
-
-      if (ordering == PERMUTE)
-	{
-	  /* If we have just processed some options following some non-options,
-	     exchange them so that the options come first.  */
-
-	  if (first_nonopt != last_nonopt && last_nonopt != optind)
-	    exchange ((char **) argv);
-	  else if (last_nonopt != optind)
-	    first_nonopt = optind;
-
-	  /* Skip any additional non-options
-	     and extend the range of non-options previously skipped.  */
-
-	  while (optind < argc && NONOPTION_P)
-	    optind++;
-	  last_nonopt = optind;
-	}
-
-      /* The special ARGV-element `--' means premature end of options.
-	 Skip it like a null option,
-	 then exchange with previous non-options as if it were an option,
-	 then skip everything else like a non-option.  */
-
-      if (optind != argc && !strcmp (argv[optind], "--"))
-	{
-	  optind++;
-
-	  if (first_nonopt != last_nonopt && last_nonopt != optind)
-	    exchange ((char **) argv);
-	  else if (first_nonopt == last_nonopt)
-	    first_nonopt = optind;
-	  last_nonopt = argc;
-
-	  optind = argc;
-	}
-
-      /* If we have done all the ARGV-elements, stop the scan
-	 and back over any non-options that we skipped and permuted.  */
-
-      if (optind == argc)
-	{
-	  /* Set the next-arg-index to point at the non-options
-	     that we previously skipped, so the caller will digest them.  */
-	  if (first_nonopt != last_nonopt)
-	    optind = first_nonopt;
-	  return -1;
-	}
-
-      /* If we have come to a non-option and did not permute it,
-	 either stop the scan or describe it to the caller and pass it by.  */
-
-      if (NONOPTION_P)
-	{
-	  if (ordering == REQUIRE_ORDER)
-	    return -1;
-	  optarg = argv[optind++];
-	  return 1;
-	}
-
-      /* We have found another option-ARGV-element.
-	 Skip the initial punctuation.  */
-
-      nextchar = (argv[optind] + 1
-		  + (longopts != NULL && argv[optind][1] == '-'));
-    }
-
-  /* Decode the current option-ARGV-element.  */
-
-  /* Check whether the ARGV-element is a long option.
-
-     If long_only and the ARGV-element has the form "-f", where f is
-     a valid short option, don't consider it an abbreviated form of
-     a long option that starts with f.  Otherwise there would be no
-     way to give the -f short option.
-
-     On the other hand, if there's a long option "fubar" and
-     the ARGV-element is "-fu", do consider that an abbreviation of
-     the long option, just like "--fu", and not "-f" with arg "u".
-
-     This distinction seems to be the most useful approach.  */
-
-  if (longopts != NULL
-      && (argv[optind][1] == '-'
-	  || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
-    {
-      char *nameend;
-      const struct option *p;
-      const struct option *pfound = NULL;
-      int exact = 0;
-      int ambig = 0;
-      int indfound = -1;
-      int option_index;
-
-      for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
-	/* Do nothing.  */ ;
-
-      /* Test all long options for either exact match
-	 or abbreviated matches.  */
-      for (p = longopts, option_index = 0; p->name; p++, option_index++)
-	if (!strncmp (p->name, nextchar, nameend - nextchar))
-	  {
-	    if ((unsigned int) (nameend - nextchar)
-		== (unsigned int) strlen (p->name))
-	      {
-		/* Exact match found.  */
-		pfound = p;
-		indfound = option_index;
-		exact = 1;
-		break;
-	      }
-	    else if (pfound == NULL)
-	      {
-		/* First nonexact match found.  */
-		pfound = p;
-		indfound = option_index;
-	      }
-	    else if (long_only
-		     || pfound->has_arg != p->has_arg
-		     || pfound->flag != p->flag
-		     || pfound->val != p->val)
-	      /* Second or later nonexact match found.  */
-	      ambig = 1;
-	  }
-
-      if (ambig && !exact)
-	{
-	  if (print_errors)
-	    {
-#if defined _LIBC && defined USE_IN_LIBIO
-	      char *buf;
-
-	      if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
-			      argv[0], argv[optind]) >= 0)
-		{
-
-		  if (_IO_fwide (stderr, 0) > 0)
-		    __fwprintf (stderr, L"%s", buf);
-		  else
-		    fputs (buf, stderr);
-
-		  free (buf);
-		}
-#else
-	      fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
-		       argv[0], argv[optind]);
-#endif
-	    }
-	  nextchar += strlen (nextchar);
-	  optind++;
-	  optopt = 0;
-	  return '?';
-	}
-
-      if (pfound != NULL)
-	{
-	  option_index = indfound;
-	  optind++;
-	  if (*nameend)
-	    {
-	      /* Don't test has_arg with >, because some C compilers don't
-		 allow it to be used on enums.  */
-	      if (pfound->has_arg)
-		optarg = nameend + 1;
-	      else
-		{
-		  if (print_errors)
-		    {
-#if defined _LIBC && defined USE_IN_LIBIO
-		      char *buf;
-		      int n;
-#endif
-
-		      if (argv[optind - 1][1] == '-')
-			{
-			  /* --option */
-#if defined _LIBC && defined USE_IN_LIBIO
-			  n = __asprintf (&buf, _("\
-%s: option `--%s' doesn't allow an argument\n"),
-					  argv[0], pfound->name);
-#else
-			  fprintf (stderr, _("\
-%s: option `--%s' doesn't allow an argument\n"),
-				   argv[0], pfound->name);
-#endif
-			}
-		      else
-			{
-			  /* +option or -option */
-#if defined _LIBC && defined USE_IN_LIBIO
-			  n = __asprintf (&buf, _("\
-%s: option `%c%s' doesn't allow an argument\n"),
-					  argv[0], argv[optind - 1][0],
-					  pfound->name);
-#else
-			  fprintf (stderr, _("\
-%s: option `%c%s' doesn't allow an argument\n"),
-				   argv[0], argv[optind - 1][0], pfound->name);
-#endif
-			}
-
-#if defined _LIBC && defined USE_IN_LIBIO
-		      if (n >= 0)
-			{
-			  if (_IO_fwide (stderr, 0) > 0)
-			    __fwprintf (stderr, L"%s", buf);
-			  else
-			    fputs (buf, stderr);
-
-			  free (buf);
-			}
-#endif
-		    }
-
-		  nextchar += strlen (nextchar);
-
-		  optopt = pfound->val;
-		  return '?';
-		}
-	    }
-	  else if (pfound->has_arg == 1)
-	    {
-	      if (optind < argc)
-		optarg = argv[optind++];
-	      else
-		{
-		  if (print_errors)
-		    {
-#if defined _LIBC && defined USE_IN_LIBIO
-		      char *buf;
-
-		      if (__asprintf (&buf, _("\
-%s: option `%s' requires an argument\n"),
-				      argv[0], argv[optind - 1]) >= 0)
-			{
-			  if (_IO_fwide (stderr, 0) > 0)
-			    __fwprintf (stderr, L"%s", buf);
-			  else
-			    fputs (buf, stderr);
-
-			  free (buf);
-			}
-#else
-		      fprintf (stderr,
-			       _("%s: option `%s' requires an argument\n"),
-			       argv[0], argv[optind - 1]);
-#endif
-		    }
-		  nextchar += strlen (nextchar);
-		  optopt = pfound->val;
-		  return optstring[0] == ':' ? ':' : '?';
-		}
-	    }
-	  nextchar += strlen (nextchar);
-	  if (longind != NULL)
-	    *longind = option_index;
-	  if (pfound->flag)
-	    {
-	      *(pfound->flag) = pfound->val;
-	      return 0;
-	    }
-	  return pfound->val;
-	}
-
-      /* Can't find it as a long option.  If this is not getopt_long_only,
-	 or the option starts with '--' or is not a valid short
-	 option, then it's an error.
-	 Otherwise interpret it as a short option.  */
-      if (!long_only || argv[optind][1] == '-'
-	  || my_index (optstring, *nextchar) == NULL)
-	{
-	  if (print_errors)
-	    {
-#if defined _LIBC && defined USE_IN_LIBIO
-	      char *buf;
-	      int n;
-#endif
-
-	      if (argv[optind][1] == '-')
-		{
-		  /* --option */
-#if defined _LIBC && defined USE_IN_LIBIO
-		  n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
-				  argv[0], nextchar);
-#else
-		  fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
-			   argv[0], nextchar);
-#endif
-		}
-	      else
-		{
-		  /* +option or -option */
-#if defined _LIBC && defined USE_IN_LIBIO
-		  n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
-				  argv[0], argv[optind][0], nextchar);
-#else
-		  fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
-			   argv[0], argv[optind][0], nextchar);
-#endif
-		}
-
-#if defined _LIBC && defined USE_IN_LIBIO
-	      if (n >= 0)
-		{
-		  if (_IO_fwide (stderr, 0) > 0)
-		    __fwprintf (stderr, L"%s", buf);
-		  else
-		    fputs (buf, stderr);
-
-		  free (buf);
-		}
-#endif
-	    }
-	  nextchar = (char *) "";
-	  optind++;
-	  optopt = 0;
-	  return '?';
-	}
-    }
-
-  /* Look at and handle the next short option-character.  */
-
-  {
-    char c = *nextchar++;
-    char *temp = my_index (optstring, c);
-
-    /* Increment `optind' when we start to process its last character.  */
-    if (*nextchar == '\0')
-      ++optind;
-
-    if (temp == NULL || c == ':')
-      {
-	if (print_errors)
-	  {
-#if defined _LIBC && defined USE_IN_LIBIO
-	      char *buf;
-	      int n;
-#endif
-
-	    if (posixly_correct)
-	      {
-		/* 1003.2 specifies the format of this message.  */
-#if defined _LIBC && defined USE_IN_LIBIO
-		n = __asprintf (&buf, _("%s: illegal option -- %c\n"),
-				argv[0], c);
-#else
-		fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
-#endif
-	      }
-	    else
-	      {
-#if defined _LIBC && defined USE_IN_LIBIO
-		n = __asprintf (&buf, _("%s: invalid option -- %c\n"),
-				argv[0], c);
-#else
-		fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
-#endif
-	      }
-
-#if defined _LIBC && defined USE_IN_LIBIO
-	    if (n >= 0)
-	      {
-		if (_IO_fwide (stderr, 0) > 0)
-		  __fwprintf (stderr, L"%s", buf);
-		else
-		  fputs (buf, stderr);
-
-		free (buf);
-	      }
-#endif
-	  }
-	optopt = c;
-	return '?';
-      }
-    /* Convenience. Treat POSIX -W foo same as long option --foo */
-    if (temp[0] == 'W' && temp[1] == ';')
-      {
-	char *nameend;
-	const struct option *p;
-	const struct option *pfound = NULL;
-	int exact = 0;
-	int ambig = 0;
-	int indfound = 0;
-	int option_index;
-
-	/* This is an option that requires an argument.  */
-	if (*nextchar != '\0')
-	  {
-	    optarg = nextchar;
-	    /* If we end this ARGV-element by taking the rest as an arg,
-	       we must advance to the next element now.  */
-	    optind++;
-	  }
-	else if (optind == argc)
-	  {
-	    if (print_errors)
-	      {
-		/* 1003.2 specifies the format of this message.  */
-#if defined _LIBC && defined USE_IN_LIBIO
-		char *buf;
-
-		if (__asprintf (&buf,
-				_("%s: option requires an argument -- %c\n"),
-				argv[0], c) >= 0)
-		  {
-		    if (_IO_fwide (stderr, 0) > 0)
-		      __fwprintf (stderr, L"%s", buf);
-		    else
-		      fputs (buf, stderr);
-
-		    free (buf);
-		  }
-#else
-		fprintf (stderr, _("%s: option requires an argument -- %c\n"),
-			 argv[0], c);
-#endif
-	      }
-	    optopt = c;
-	    if (optstring[0] == ':')
-	      c = ':';
-	    else
-	      c = '?';
-	    return c;
-	  }
-	else
-	  /* We already incremented `optind' once;
-	     increment it again when taking next ARGV-elt as argument.  */
-	  optarg = argv[optind++];
-
-	/* optarg is now the argument, see if it's in the
-	   table of longopts.  */
-
-	for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
-	  /* Do nothing.  */ ;
-
-	/* Test all long options for either exact match
-	   or abbreviated matches.  */
-	for (p = longopts, option_index = 0; p->name; p++, option_index++)
-	  if (!strncmp (p->name, nextchar, nameend - nextchar))
-	    {
-	      if ((unsigned int) (nameend - nextchar) == strlen (p->name))
-		{
-		  /* Exact match found.  */
-		  pfound = p;
-		  indfound = option_index;
-		  exact = 1;
-		  break;
-		}
-	      else if (pfound == NULL)
-		{
-		  /* First nonexact match found.  */
-		  pfound = p;
-		  indfound = option_index;
-		}
-	      else
-		/* Second or later nonexact match found.  */
-		ambig = 1;
-	    }
-	if (ambig && !exact)
-	  {
-	    if (print_errors)
-	      {
-#if defined _LIBC && defined USE_IN_LIBIO
-		char *buf;
-
-		if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
-				argv[0], argv[optind]) >= 0)
-		  {
-		    if (_IO_fwide (stderr, 0) > 0)
-		      __fwprintf (stderr, L"%s", buf);
-		    else
-		      fputs (buf, stderr);
-
-		    free (buf);
-		  }
-#else
-		fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
-			 argv[0], argv[optind]);
-#endif
-	      }
-	    nextchar += strlen (nextchar);
-	    optind++;
-	    return '?';
-	  }
-	if (pfound != NULL)
-	  {
-	    option_index = indfound;
-	    if (*nameend)
-	      {
-		/* Don't test has_arg with >, because some C compilers don't
-		   allow it to be used on enums.  */
-		if (pfound->has_arg)
-		  optarg = nameend + 1;
-		else
-		  {
-		    if (print_errors)
-		      {
-#if defined _LIBC && defined USE_IN_LIBIO
-			char *buf;
-
-			if (__asprintf (&buf, _("\
-%s: option `-W %s' doesn't allow an argument\n"),
-					argv[0], pfound->name) >= 0)
-			  {
-			    if (_IO_fwide (stderr, 0) > 0)
-			      __fwprintf (stderr, L"%s", buf);
-			    else
-			      fputs (buf, stderr);
-
-			    free (buf);
-			  }
-#else
-			fprintf (stderr, _("\
-%s: option `-W %s' doesn't allow an argument\n"),
-				 argv[0], pfound->name);
-#endif
-		      }
-
-		    nextchar += strlen (nextchar);
-		    return '?';
-		  }
-	      }
-	    else if (pfound->has_arg == 1)
-	      {
-		if (optind < argc)
-		  optarg = argv[optind++];
-		else
-		  {
-		    if (print_errors)
-		      {
-#if defined _LIBC && defined USE_IN_LIBIO
-			char *buf;
-
-			if (__asprintf (&buf, _("\
-%s: option `%s' requires an argument\n"),
-					argv[0], argv[optind - 1]) >= 0)
-			  {
-			    if (_IO_fwide (stderr, 0) > 0)
-			      __fwprintf (stderr, L"%s", buf);
-			    else
-			      fputs (buf, stderr);
-
-			    free (buf);
-			  }
-#else
-			fprintf (stderr,
-				 _("%s: option `%s' requires an argument\n"),
-				 argv[0], argv[optind - 1]);
-#endif
-		      }
-		    nextchar += strlen (nextchar);
-		    return optstring[0] == ':' ? ':' : '?';
-		  }
-	      }
-	    nextchar += strlen (nextchar);
-	    if (longind != NULL)
-	      *longind = option_index;
-	    if (pfound->flag)
-	      {
-		*(pfound->flag) = pfound->val;
-		return 0;
-	      }
-	    return pfound->val;
-	  }
-	  nextchar = NULL;
-	  return 'W';	/* Let the application handle it.   */
-      }
-    if (temp[1] == ':')
-      {
-	if (temp[2] == ':')
-	  {
-	    /* This is an option that accepts an argument optionally.  */
-	    if (*nextchar != '\0')
-	      {
-		optarg = nextchar;
-		optind++;
-	      }
-	    else
-	      optarg = NULL;
-	    nextchar = NULL;
-	  }
-	else
-	  {
-	    /* This is an option that requires an argument.  */
-	    if (*nextchar != '\0')
-	      {
-		optarg = nextchar;
-		/* If we end this ARGV-element by taking the rest as an arg,
-		   we must advance to the next element now.  */
-		optind++;
-	      }
-	    else if (optind == argc)
-	      {
-		if (print_errors)
-		  {
-		    /* 1003.2 specifies the format of this message.  */
-#if defined _LIBC && defined USE_IN_LIBIO
-		    char *buf;
-
-		    if (__asprintf (&buf, _("\
-%s: option requires an argument -- %c\n"),
-				    argv[0], c) >= 0)
-		      {
-			if (_IO_fwide (stderr, 0) > 0)
-			  __fwprintf (stderr, L"%s", buf);
-			else
-			  fputs (buf, stderr);
-
-			free (buf);
-		      }
-#else
-		    fprintf (stderr,
-			     _("%s: option requires an argument -- %c\n"),
-			     argv[0], c);
-#endif
-		  }
-		optopt = c;
-		if (optstring[0] == ':')
-		  c = ':';
-		else
-		  c = '?';
-	      }
-	    else
-	      /* We already incremented `optind' once;
-		 increment it again when taking next ARGV-elt as argument.  */
-	      optarg = argv[optind++];
-	    nextchar = NULL;
-	  }
-      }
-    return c;
-  }
-}
-
-int
-getopt (argc, argv, optstring)
-     int argc;
-     char *const *argv;
-     const char *optstring;
-{
-  return _getopt_internal (argc, argv, optstring,
-			   (const struct option *) 0,
-			   (int *) 0,
-			   0);
-}
-
-#endif	/* Not ELIDE_CODE.  */
-
-#ifdef TEST
-
-/* Compile with -DTEST to make an executable for use in testing
-   the above definition of `getopt'.  */
-
-int
-main (argc, argv)
-     int argc;
-     char **argv;
-{
-  int c;
-  int digit_optind = 0;
-
-  while (1)
-    {
-      int this_option_optind = optind ? optind : 1;
-
-      c = getopt (argc, argv, "abc:d:0123456789");
-      if (c == -1)
-	break;
-
-      switch (c)
-	{
-	case '0':
-	case '1':
-	case '2':
-	case '3':
-	case '4':
-	case '5':
-	case '6':
-	case '7':
-	case '8':
-	case '9':
-	  if (digit_optind != 0 && digit_optind != this_option_optind)
-	    printf ("digits occur in two different argv-elements.\n");
-	  digit_optind = this_option_optind;
-	  printf ("option %c\n", c);
-	  break;
-
-	case 'a':
-	  printf ("option a\n");
-	  break;
-
-	case 'b':
-	  printf ("option b\n");
-	  break;
-
-	case 'c':
-	  printf ("option c with value `%s'\n", optarg);
-	  break;
-
-	case '?':
-	  break;
-
-	default:
-	  printf ("?? getopt returned character code 0%o ??\n", c);
-	}
-    }
-
-  if (optind < argc)
-    {
-      printf ("non-option ARGV-elements: ");
-      while (optind < argc)
-	printf ("%s ", argv[optind++]);
-      printf ("\n");
-    }
-
-  exit (0);
-}
-
-#endif /* TEST */
-
diff --git a/build.vc15/getopt.h b/build.vc15/getopt.h
deleted file mode 100644
index 95084d11..00000000
--- a/build.vc15/getopt.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/* Declarations for getopt.
-   Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#ifndef _GETOPT_H
-
-#ifndef __need_getopt
-# define _GETOPT_H 1
-#endif
-
-/* If __GNU_LIBRARY__ is not already defined, either we are being used
-   standalone, or this is the first header included in the source file.
-   If we are being used with glibc, we need to include <features.h>, but
-   that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
-   not defined, include <ctype.h>, which will pull in <features.h> for us
-   if it's from glibc.  (Why ctype.h?  It's guaranteed to exist and it
-   doesn't flood the namespace with stuff the way some other headers do.)  */
-#if !defined __GNU_LIBRARY__
-# include <ctype.h>
-#endif
-
-#ifdef	__cplusplus
-extern "C" {
-#endif
-
-/* For communication from `getopt' to the caller.
-   When `getopt' finds an option that takes an argument,
-   the argument value is returned here.
-   Also, when `ordering' is RETURN_IN_ORDER,
-   each non-option ARGV-element is returned here.  */
-
-extern char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
-   This is used for communication to and from the caller
-   and for communication between successive calls to `getopt'.
-
-   On entry to `getopt', zero means this is the first call; initialize.
-
-   When `getopt' returns -1, this is the index of the first of the
-   non-option elements that the caller should itself scan.
-
-   Otherwise, `optind' communicates from one call to the next
-   how much of ARGV has been scanned so far.  */
-
-extern int optind;
-
-/* Callers store zero here to inhibit the error message `getopt' prints
-   for unrecognized options.  */
-
-extern int opterr;
-
-/* Set to an option character which was unrecognized.  */
-
-extern int optopt;
-
-#ifndef __need_getopt
-/* Describe the long-named options requested by the application.
-   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
-   of `struct option' terminated by an element containing a name which is
-   zero.
-
-   The field `has_arg' is:
-   no_argument		(or 0) if the option does not take an argument,
-   required_argument	(or 1) if the option requires an argument,
-   optional_argument 	(or 2) if the option takes an optional argument.
-
-   If the field `flag' is not NULL, it points to a variable that is set
-   to the value given in the field `val' when the option is found, but
-   left unchanged if the option is not found.
-
-   To have a long-named option do something other than set an `int' to
-   a compiled-in constant, such as set a value from `optarg', set the
-   option's `flag' field to zero and its `val' field to a nonzero
-   value (the equivalent single-letter option character, if there is
-   one).  For long options that have a zero `flag' field, `getopt'
-   returns the contents of the `val' field.  */
-
-struct option
-{
-# if (defined __STDC__ && __STDC__) || defined __cplusplus
-  const char *name;
-# else
-  char *name;
-# endif
-  /* has_arg can't be an enum because some compilers complain about
-     type mismatches in all the code that assumes it is an int.  */
-  int has_arg;
-  int *flag;
-  int val;
-};
-
-/* Names for the values of the `has_arg' field of `struct option'.  */
-
-# define no_argument		0
-# define required_argument	1
-# define optional_argument	2
-#endif	/* need getopt */
-
-
-/* Get definitions and prototypes for functions to process the
-   arguments in ARGV (ARGC of them, minus the program name) for
-   options given in OPTS.
-
-   Return the option character from OPTS just read.  Return -1 when
-   there are no more options.  For unrecognized options, or options
-   missing arguments, `optopt' is set to the option letter, and '?' is
-   returned.
-
-   The OPTS string is a list of characters which are recognized option
-   letters, optionally followed by colons, specifying that that letter
-   takes an argument, to be placed in `optarg'.
-
-   If a letter in OPTS is followed by two colons, its argument is
-   optional.  This behavior is specific to the GNU `getopt'.
-
-   The argument `--' causes premature termination of argument
-   scanning, explicitly telling `getopt' that there are no more
-   options.
-
-   If OPTS begins with `--', then non-option arguments are treated as
-   arguments to the option '\0'.  This behavior is specific to the GNU
-   `getopt'.  */
-
-#if (defined __STDC__ && __STDC__) || defined __cplusplus
-# ifdef __GNU_LIBRARY__
-/* Many other libraries have conflicting prototypes for getopt, with
-   differences in the consts, in stdlib.h.  To avoid compilation
-   errors, only prototype getopt for the GNU C library.  */
-extern int getopt (int ___argc, char *const *___argv, const char *__shortopts);
-# else /* not __GNU_LIBRARY__ */
-extern int getopt ();
-# endif /* __GNU_LIBRARY__ */
-
-# ifndef __need_getopt
-extern int getopt_long (int ___argc, char *const *___argv,
-			const char *__shortopts,
-		        const struct option *__longopts, int *__longind);
-extern int getopt_long_only (int ___argc, char *const *___argv,
-			     const char *__shortopts,
-		             const struct option *__longopts, int *__longind);
-
-/* Internal only.  Users should not call this directly.  */
-extern int _getopt_internal (int ___argc, char *const *___argv,
-			     const char *__shortopts,
-		             const struct option *__longopts, int *__longind,
-			     int __long_only);
-# endif
-#else /* not __STDC__ */
-extern int getopt ();
-# ifndef __need_getopt
-extern int getopt_long ();
-extern int getopt_long_only ();
-
-extern int _getopt_internal ();
-# endif
-#endif /* __STDC__ */
-
-#ifdef	__cplusplus
-}
-#endif
-
-/* Make sure we later can get all the definitions and declarations.  */
-#undef __need_getopt
-
-#endif /* getopt.h */
-
diff --git a/build.vc15/getrusage.c b/build.vc15/getrusage.c
deleted file mode 100644
index deea4b13..00000000
--- a/build.vc15/getrusage.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*  This file is part of the MPIR Library.
-
-    The MPIR Library is free software; you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published
-    by the Free Software Foundation; either version 2.1 of the License, or (at
-    your option) any later version.
-    The MPIR Library is distributed in the hope that it will be useful, but
-    WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-    License for more details.
-    You should have received a copy of the GNU Lesser General Public License
-    along with the MPIR Library; see the file COPYING.LIB.  If not, write
-    to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-    Boston, MA 02110-1301, USA.
-*/
-
-#define WIN32_LEAN_AND_MEAN
-
-#include <windows.h>
-#include <psapi.h>
-#include <errno.h>
-
-#include "getrusage.h"
-
-typedef union file_t
-{   FILETIME ft;
-    long long lt;
-} file_t;
-
-int getrusage(int who, rusage *usage)
-{
-    HANDLE proc_hand;
-    file_t c_time, x_time, s_time, u_time;
-    int cb = 0, err = -1;
-
-    if(who != RUSAGE_SELF) 
-    {
-        errno = (who == RUSAGE_CHILDREN ? ENODATA : EINVAL); 
-        return err;
-    }
-
-    proc_hand = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, GetCurrentProcessId());
-
-    if(GetProcessTimes(proc_hand, &(c_time.ft), &(x_time.ft), &(s_time.ft), &(u_time.ft))) 
-    {
-        PROCESS_MEMORY_COUNTERS ctrs;
-        
-        /* The units returned by GetProcessTimes are 100 nanoseconds */
-        u_time.lt = (u_time.lt + 5) / 10;
-        s_time.lt = (s_time.lt + 5) / 10;
-
-        usage->ru_utime.tv_sec  = (long)(u_time.lt / 1000000ll);
-        usage->ru_stime.tv_sec  = (long)(s_time.lt / 1000000ll);
-        usage->ru_utime.tv_usec = (long)(u_time.lt % 1000000ll);
-        usage->ru_stime.tv_usec = (long)(s_time.lt % 1000000ll);
-
-        if(GetProcessMemoryInfo(proc_hand, &ctrs, sizeof(ctrs))) 
-        {
-            PERFORMANCE_INFORMATION perf_info;
-            GetPerformanceInfo(&perf_info, sizeof(perf_info));
-            usage->ru_maxrss = (DWORD) (ctrs.WorkingSetSize / perf_info.PageSize);
-            usage->ru_majflt = ctrs.PageFaultCount;
-            err = 0;
-        }
-    }
-
-    if(err)
-        errno = EACCES;
-    CloseHandle(proc_hand);
-    return err;
-}
diff --git a/build.vc15/getrusage.h b/build.vc15/getrusage.h
deleted file mode 100644
index f449c434..00000000
--- a/build.vc15/getrusage.h
+++ /dev/null
@@ -1,46 +0,0 @@
-
-#ifndef _GETRUSAGE_H
-#define _GETRUSAGE_H
-
-#if defined(__cplusplus)
-extern "C"
-{
-#endif
-
-#define ENODATA         61
-#define	RUSAGE_SELF	     0
-#define	RUSAGE_CHILDREN	-1
-
-typedef struct
-{
-    long            tv_sec;
-    long            tv_usec;
-} tval;
-
-typedef struct rusage
-{
-    tval  ru_utime;   /* user time used                      */
-    tval  ru_stime;   /* system time used                    */
-    long     ru_maxrss;  /* integral max resident set size      */
-    long     ru_ixrss;   /* integral shared text memory size    */
-    long     ru_idrss;   /* integral unshared data size         */
-    long     ru_isrss;   /* integral unshared stack size        */
-    long     ru_minflt;  /* page reclaims                       */
-    long     ru_majflt;  /* page faults                         */
-    long     ru_nswap;   /* swaps                               */
-    long     ru_inblock; /* block input operations              */
-    long     ru_oublock; /* block output operations             */
-    long     ru_msgsnd;  /* messages sent                       */
-    long     ru_msgrcv;  /* messages received                   */
-    long     ru_nsignals;/* signals received                    */
-    long     ru_nvcsw;   /* voluntary context switches          */
-    long     ru_nivcsw;  /* involuntary context switches        */
-} rusage;
-
-int getrusage(int who, rusage *usage);
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif
diff --git a/build.vc15/gettimeofday.c b/build.vc15/gettimeofday.c
deleted file mode 100644
index d576e24e..00000000
--- a/build.vc15/gettimeofday.c
+++ /dev/null
@@ -1,39 +0,0 @@
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include <time.h>
-
-#include "gettimeofday.h"
-
-int gettimeofday(struct timeval *tv, struct timezone *tz)
-{
-    FILETIME        ft;
-    LARGE_INTEGER   li;
-    __int64         t;
-    static int      tzflag;
-
-    if(tv)
-    {
-        GetSystemTimeAsFileTime(&ft);
-        li.LowPart  = ft.dwLowDateTime;
-        li.HighPart = ft.dwHighDateTime;
-        t  = li.QuadPart; 
-        t -= EPOCHFILETIME;
-        t /= 10;
-        tv->tv_sec  = (long)(t / 1000000);
-        tv->tv_usec = (long)(t % 1000000);
-    }
-
-    if (tz)
-    {
-        if (!tzflag)
-        {
-            _tzset();
-            tzflag++;
-        }
-        tz->tz_minuteswest = _timezone / 60;
-        tz->tz_dsttime = _daylight;
-    }
-
-    return 0;
-}
diff --git a/build.vc15/gettimeofday.h b/build.vc15/gettimeofday.h
deleted file mode 100644
index 1c9dde98..00000000
--- a/build.vc15/gettimeofday.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * timeval.h    1.0 01/12/19
- *
- * Defines gettimeofday, timeval, etc. for Win32
- *
- * By Wu Yongwei
- *
- */
-#ifndef _TIMEVAL_H
-#define _TIMEVAL_H
-
-#include <winsock2.h>
-
-#define EPOCHFILETIME (116444736000000000LL)
-
-#if defined(__cplusplus)
-extern "C"
-{
-#endif
-
-struct timezone 
-{
-    int tz_minuteswest; /* minutes W of Greenwich */
-    int tz_dsttime;     /* type of dst correction */
-};
-
-int gettimeofday(struct timeval *tv, struct timezone *tz);
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* _TIMEVAL_H */
-
diff --git a/build.vc15/libecm/Makefile.am b/build.vc15/libecm/Makefile.am
deleted file mode 100644
index 50bc2a0a..00000000
--- a/build.vc15/libecm/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = libecm.vcxproj libecm.vcxproj.filters
diff --git a/build.vc15/libecm/libecm.vcxproj b/build.vc15/libecm/libecm.vcxproj
deleted file mode 100644
index 037fb79d..00000000
--- a/build.vc15/libecm/libecm.vcxproj
+++ /dev/null
@@ -1,253 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{CD555681-D65B-4173-A29C-B8BF06A4871B}</ProjectGuid>
-    <RootNamespace>libecm</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfAtl>Static</UseOfAtl>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="..\vsyasm.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <PreBuildEvent>
-      <Command>..\prebuild NO_GPU</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;SSE2;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-    <YASM>
-      <ObjectFile>$(IntDir)%(Filename).obj</ObjectFile>
-    </YASM>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <PreBuildEvent>
-      <Command>..\prebuild NO_GPU</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;NDEBUG;_LIB;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-    <Lib />
-    <YASM>
-      <Defines>_WIN64</Defines>
-      <ObjectFile>$(IntDir)%(Filename).obj</ObjectFile>
-    </YASM>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <PreBuildEvent>
-      <Command>..\prebuild NO_GPU</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;SSE2;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-    <YASM>
-      <ObjectFile>$(IntDir)%(Filename).obj</ObjectFile>
-    </YASM>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <PreBuildEvent>
-      <Command>..\prebuild NO_GPU</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;_DEBUG;_LIB;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-    <Lib />
-    <YASM>
-      <Defines>_WIN64</Defines>
-      <ObjectFile>$(IntDir)%(Filename).obj</ObjectFile>
-    </YASM>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm" />
-    <YASM Include="..\assembler\redc.asm" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\addlaws.c" />
-    <ClCompile Include="..\..\aprtcle\mpz_aprcl.c" />
-    <ClCompile Include="..\..\auxarith.c" />
-    <ClCompile Include="..\..\auxlib.c" />
-    <ClCompile Include="..\..\batch.c" />
-    <ClCompile Include="..\..\bestd.c" />
-    <ClCompile Include="..\..\cudawrapper.c" />
-    <ClCompile Include="..\..\ecm.c" />
-    <ClCompile Include="..\..\ecm2.c" />
-    <ClCompile Include="..\..\ecm_ntt.c" />
-    <ClCompile Include="..\..\factor.c" />
-    <ClCompile Include="..\..\getprime_r.c" />
-    <ClCompile Include="..\..\ks-multiply.c" />
-    <ClCompile Include="..\..\listz.c" />
-    <ClCompile Include="..\..\listz_handle.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\..\lucas.c" />
-    <ClCompile Include="..\..\median.c" />
-    <ClCompile Include="..\..\mpmod.c" />
-    <ClCompile Include="..\..\mpzspm.c" />
-    <ClCompile Include="..\..\mpzspv.c" />
-    <ClCompile Include="..\..\mul_lo.c" />
-    <ClCompile Include="..\..\ntt_gfp.c" />
-    <ClCompile Include="..\..\parametrizations.c" />
-    <ClCompile Include="..\..\pm1.c" />
-    <ClCompile Include="..\..\pm1fs2.c" />
-    <ClCompile Include="..\..\polyeval.c" />
-    <ClCompile Include="..\..\pp1.c" />
-    <ClCompile Include="..\..\random.c" />
-    <ClCompile Include="..\..\rho.c" />
-    <ClCompile Include="..\..\schoen_strass.c" />
-    <ClCompile Include="..\..\sets_long.c" />
-    <ClCompile Include="..\..\sp.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\spm.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\spv.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\stage2.c" />
-    <ClCompile Include="..\..\torsions.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-    <ClInclude Include="..\..\addlaws.h" />
-    <ClInclude Include="..\..\aprtcle\jacobi_sum.h" />
-    <ClInclude Include="..\..\aprtcle\mpz_aprcl.h" />
-    <ClInclude Include="..\..\champions.h" />
-    <ClInclude Include="..\..\config.h" />
-    <ClInclude Include="..\..\ecm-ecm.h" />
-    <ClInclude Include="..\..\ecm-gmp.h" />
-    <ClInclude Include="..\..\ecm-gpu.h" />
-    <ClInclude Include="..\..\ecm-impl.h" />
-    <ClInclude Include="..\..\ecm-params.h" />
-    <ClInclude Include="..\..\ecm.h" />
-    <ClInclude Include="..\..\getprime_r.h" />
-    <ClInclude Include="..\..\listz_handle.h" />
-    <ClInclude Include="..\..\longlong.h" />
-    <ClInclude Include="..\..\mpmod.h" />
-    <ClInclude Include="..\..\sp.h" />
-    <ClInclude Include="..\..\torsions.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="..\vsyasm.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc15/libecm/libecm.vcxproj.filters b/build.vc15/libecm/libecm.vcxproj.filters
deleted file mode 100644
index 12c4727d..00000000
--- a/build.vc15/libecm/libecm.vcxproj.filters
+++ /dev/null
@@ -1,190 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Source Files\Assembler">
-      <UniqueIdentifier>{2f18179f-5dba-420c-8dc7-bc7f8228a1b2}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm">
-      <Filter>Source Files\Assembler</Filter>
-    </YASM>
-    <YASM Include="..\assembler\redc.asm">
-      <Filter>Source Files\Assembler</Filter>
-    </YASM>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxarith.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\auxlib.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\bestd.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm_ntt.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\factor.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ks-multiply.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\listz.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\lucas.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\median.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpmod.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mul_lo.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ntt_gfp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pm1.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pm1fs2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\polyeval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pp1.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\random.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\rho.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\schoen_strass.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\sets_long.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\sp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\stage2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\batch.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\parametrizations.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\cudawrapper.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\addlaws.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\listz_handle.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\torsions.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\aprtcle\mpz_aprcl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\getprime_r.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\sp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\champions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gpu.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\addlaws.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\listz_handle.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\torsions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\aprtcle\jacobi_sum.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\aprtcle\mpz_aprcl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\getprime_r.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\mpmod.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc15/libecm_gpu/Makefile.am b/build.vc15/libecm_gpu/Makefile.am
deleted file mode 100644
index 3885d988..00000000
--- a/build.vc15/libecm_gpu/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = libecm_gpu.vcxproj libecm_gpu.vcxproj.filters
diff --git a/build.vc15/libecm_gpu/libecm_gpu.vcxproj b/build.vc15/libecm_gpu/libecm_gpu.vcxproj
deleted file mode 100644
index 035c1118..00000000
--- a/build.vc15/libecm_gpu/libecm_gpu.vcxproj
+++ /dev/null
@@ -1,311 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{3DCDD03F-7F5E-4C3C-BC19-F5C6531EAC00}</ProjectGuid>
-    <RootNamespace>libecm_gpu</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfAtl>Static</UseOfAtl>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="..\vsyasm.props" />
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 10.1.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\lib\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ecmlib</TargetName>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <PreBuildEvent>
-      <Command>..\prebuild GPU</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC50;NDEBUG;_LIB;SSE2;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <Optimization>Full</Optimization>
-    </ClCompile>
-    <Lib />
-    <CudaCompile>
-      <CodeGeneration>compute_50,sm_50</CodeGeneration>
-    </CudaCompile>
-    <CudaCompile>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <TargetMachinePlatform>32</TargetMachinePlatform>
-    </CudaCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-    </ProjectReference>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <PreBuildEvent>
-      <Command>..\prebuild GPU</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC50;_WIN64;NDEBUG;_LIB;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-    <Lib />
-    <YASM>
-      <Defines>_WIN64</Defines>
-    </YASM>
-    <CudaCompile>
-      <CodeGeneration>compute_50,sm_50</CodeGeneration>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <TargetMachinePlatform>64</TargetMachinePlatform>
-    </CudaCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-    </ProjectReference>
-    <Lib>
-      <AdditionalDependencies>
-      </AdditionalDependencies>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <PreBuildEvent>
-      <Command>..\prebuild GPU</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC50;_DEBUG;_LIB;SSE2;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-    <CudaCompile>
-      <CodeGeneration>compute_50,sm_50</CodeGeneration>
-    </CudaCompile>
-    <CudaCompile>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <TargetMachinePlatform>32</TargetMachinePlatform>
-    </CudaCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-    </ProjectReference>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <PreBuildEvent>
-      <Command>..\prebuild GPU</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WITH_GPU;GPU_CC50;_WIN64;_DEBUG;_LIB;USE_ASM_REDC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Lib />
-    <Lib />
-    <YASM>
-      <Defines>_WIN64</Defines>
-    </YASM>
-    <CudaCompile>
-      <CodeGeneration>compute_50,sm_50</CodeGeneration>
-    </CudaCompile>
-    <CudaCompile>
-      <PtxAsOptionV>true</PtxAsOptionV>
-      <AdditionalCompilerOptions>
-      </AdditionalCompilerOptions>
-      <Include>..\;..\..\..\mpir\lib\$(IntDir)</Include>
-      <TargetMachinePlatform>64</TargetMachinePlatform>
-    </CudaCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-    </ProjectReference>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\addlaws.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\..\aprtcle\mpz_aprcl.c" />
-    <ClCompile Include="..\..\auxarith.c" />
-    <ClCompile Include="..\..\auxlib.c" />
-    <ClCompile Include="..\..\batch.c" />
-    <ClCompile Include="..\..\bestd.c" />
-    <ClCompile Include="..\..\cudawrapper.c" />
-    <ClCompile Include="..\..\ecm.c" />
-    <ClCompile Include="..\..\ecm2.c" />
-    <ClCompile Include="..\..\ecm_ntt.c" />
-    <ClCompile Include="..\..\factor.c" />
-    <ClCompile Include="..\..\getprime_r.c" />
-    <ClCompile Include="..\..\ks-multiply.c" />
-    <ClCompile Include="..\..\listz.c" />
-    <ClCompile Include="..\..\listz_handle.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\..\lucas.c" />
-    <ClCompile Include="..\..\median.c" />
-    <ClCompile Include="..\..\mpmod.c" />
-    <ClCompile Include="..\..\mpzspm.c" />
-    <ClCompile Include="..\..\mpzspv.c" />
-    <ClCompile Include="..\..\mul_lo.c" />
-    <ClCompile Include="..\..\ntt_gfp.c" />
-    <ClCompile Include="..\..\parametrizations.c" />
-    <ClCompile Include="..\..\pm1.c" />
-    <ClCompile Include="..\..\pm1fs2.c" />
-    <ClCompile Include="..\..\polyeval.c" />
-    <ClCompile Include="..\..\pp1.c" />
-    <ClCompile Include="..\..\random.c" />
-    <ClCompile Include="..\..\rho.c" />
-    <ClCompile Include="..\..\schoen_strass.c" />
-    <ClCompile Include="..\..\sets_long.c" />
-    <ClCompile Include="..\..\sp.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\spm.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\spv.c">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Full</Optimization>
-    </ClCompile>
-    <ClCompile Include="..\..\stage2.c" />
-    <ClCompile Include="..\..\torsions.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-    <ClInclude Include="..\..\addlaws.h" />
-    <ClInclude Include="..\..\aprtcle\jacobi_sum.h" />
-    <ClInclude Include="..\..\aprtcle\mpz_aprcl.h" />
-    <ClInclude Include="..\..\champions.h" />
-    <ClInclude Include="..\..\config.h" />
-    <ClInclude Include="..\..\cudakernel.h" />
-    <ClInclude Include="..\..\ecm-ecm.h" />
-    <ClInclude Include="..\..\ecm-gmp.h" />
-    <ClInclude Include="..\..\ecm-gpu.h" />
-    <ClInclude Include="..\..\ecm-impl.h" />
-    <ClInclude Include="..\..\ecm-params.h" />
-    <ClInclude Include="..\..\ecm.h" />
-    <ClInclude Include="..\..\getprime_r.h" />
-    <ClInclude Include="..\..\listz_handle.h" />
-    <ClInclude Include="..\..\longlong.h" />
-    <ClInclude Include="..\..\sp.h" />
-    <ClInclude Include="..\..\torsions.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <CudaCompile Include="..\..\cudakernel.cu">
-      <FileType>Document</FileType>
-    </CudaCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm" />
-    <YASM Include="..\assembler\redc.asm" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="..\vsyasm.targets" />
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 10.1.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc15/libecm_gpu/libecm_gpu.vcxproj.filters b/build.vc15/libecm_gpu/libecm_gpu.vcxproj.filters
deleted file mode 100644
index cdf9b862..00000000
--- a/build.vc15/libecm_gpu/libecm_gpu.vcxproj.filters
+++ /dev/null
@@ -1,193 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <ClCompile Include="..\..\mpmod.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\addlaws.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\auxarith.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\auxlib.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\batch.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\bestd.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\cudawrapper.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm_ntt.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\factor.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ks-multiply.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\listz.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\listz_handle.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\lucas.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\median.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\aprtcle\mpz_aprcl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mul_lo.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ntt_gfp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\parametrizations.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pm1.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pm1fs2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\polyeval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\pp1.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\random.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\rho.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\schoen_strass.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\sets_long.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\sp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\stage2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\torsions.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\getprime_r.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gpu.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\aprtcle\jacobi_sum.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\listz_handle.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\addlaws.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\champions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\aprtcle\mpz_aprcl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\sp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\torsions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\getprime_r.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\cudakernel.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{dfe792df-b4ff-4147-be95-190117baae33}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{0315d9d5-3f8f-456a-ae54-e00de69b9350}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Source Files\Assembler">
-      <UniqueIdentifier>{cbe6b893-95dc-4f4b-b2e9-73245cf57c75}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <CudaCompile Include="..\..\cudakernel.cu">
-      <Filter>Source Files</Filter>
-    </CudaCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm">
-      <Filter>Source Files\Assembler</Filter>
-    </YASM>
-    <YASM Include="..\assembler\redc.asm">
-      <Filter>Source Files\Assembler</Filter>
-    </YASM>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc15/mp_lib.props b/build.vc15/mp_lib.props
deleted file mode 100644
index 5fdc3ad2..00000000
--- a/build.vc15/mp_lib.props
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="UserMacros">
-    <mp_dir>mpir\lib\</mp_dir>
-    <mp_lib>mpir.lib</mp_lib>
-  </PropertyGroup>
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-  </PropertyGroup>
-  <ItemDefinitionGroup>
-    <ClCompile>
-      <PreprocessorDefinitions>
-      </PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-    </ClCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <BuildMacro Include="mp_dir">
-      <Value>$(mp_dir)</Value>
-      <EnvironmentVariable>true</EnvironmentVariable>
-    </BuildMacro>
-    <BuildMacro Include="mp_lib">
-      <Value>$(mp_lib)</Value>
-      <EnvironmentVariable>true</EnvironmentVariable>
-    </BuildMacro>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc15/multiecm/Makefile.am b/build.vc15/multiecm/Makefile.am
deleted file mode 100644
index 1a31b47b..00000000
--- a/build.vc15/multiecm/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = multiecm.vcxproj multiecm.vcxproj.filters
diff --git a/build.vc15/multiecm/multiecm.vcxproj b/build.vc15/multiecm/multiecm.vcxproj
deleted file mode 100644
index d09315f6..00000000
--- a/build.vc15/multiecm/multiecm.vcxproj
+++ /dev/null
@@ -1,238 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <RootNamespace>multiecm</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
-    <ProjectGuid>{16434DC2-371C-451B-A336-820499B98B8C}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="..\vsyasm.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)lib\$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;NDEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;..\..\..\$(mp_dir)lib\$(Platform)\release\$(mp_lib);%(AdditionalDependencies)</AdditionalDependencies>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <StackReserveSize>8388608</StackReserveSize>
-      <StackCommitSize>65536</StackCommitSize>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;_DEBUG;_CONSOLE;OUTSIDE_LIBECM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <OpenMPSupport>true</OpenMPSupport>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <StackReserveSize>8388608</StackReserveSize>
-      <StackCommitSize>65536</StackCommitSize>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\;..\..\;..\assembler;..\..\..\$(mp_dir)$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)$(IntDir)$(mp_lib);advapi32.lib;ws2_32.lib</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxi.c" />
-    <ClCompile Include="..\..\b1_ainc.c" />
-    <ClCompile Include="..\..\candi.c" />
-    <ClCompile Include="..\..\eval.c" />
-    <ClCompile Include="..\..\getprime_r.c" />
-    <ClCompile Include="..\..\multiecm.c" />
-    <ClCompile Include="..\..\random.c" />
-    <ClCompile Include="..\..\resume.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-    <ClInclude Include="..\..\champions.h" />
-    <ClInclude Include="..\..\ecm-ecm.h" />
-    <ClInclude Include="..\..\ecm-gmp.h" />
-    <ClInclude Include="..\..\ecm-impl.h" />
-    <ClInclude Include="..\..\ecm-params.h" />
-    <ClInclude Include="..\..\ecm.h" />
-    <ClInclude Include="..\..\getprime_r.h" />
-    <ClInclude Include="..\..\longlong.h" />
-    <ClInclude Include="..\config.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libecm\libecm.vcxproj">
-      <Project>{cd555681-d65b-4173-a29c-b8bf06a4871b}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="..\vsyasm.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc15/multiecm/multiecm.vcxproj.filters b/build.vc15/multiecm/multiecm.vcxproj.filters
deleted file mode 100644
index a22bf49d..00000000
--- a/build.vc15/multiecm/multiecm.vcxproj.filters
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\b1_ainc.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\candi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\eval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\random.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\resume.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\getprime_r.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\multiecm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\champions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\getprime_r.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc15/out_copy_rename.bat b/build.vc15/out_copy_rename.bat
deleted file mode 100644
index 5fe442ed..00000000
--- a/build.vc15/out_copy_rename.bat
+++ /dev/null
@@ -1,31 +0,0 @@
-@echo off
-if not exist %1 goto nofile
-if exist %2 goto next
-
-echo creating directory %2
-md %2 > nul
-
-:next
-rem strip quotes if present
-set str=%2
-for /f "useback tokens=*" %%a in ('%str%') do set str=%%~a
-
-rem add a backslash if the output directory lacks one
-set str=%str:~-1%
-if "%str%" == "\" (set outf=%2%3) else (set outf=%2\%3)
-
-echo copying %1 to %outf% (if not present or changed)
-if not exist "%outf%" goto copy
-
-rem don't overwrite if output exists and is not changed
-fc %1 %outf% > nul && if not %errorlevel 1 goto exit
-echo overwriting %outf% with %1
-
-:copy
-copy %1 %outf% > nul
-goto exit
-
-:nofile
-echo %1 not found
-
-:exit
diff --git a/build.vc15/prebuild.bat b/build.vc15/prebuild.bat
deleted file mode 100644
index bbc16852..00000000
--- a/build.vc15/prebuild.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-cd ..\
-call out_copy_rename config.h ..\ config.h
-call gen_ecm_h
diff --git a/build.vc15/python.bat b/build.vc15/python.bat
deleted file mode 100644
index 77b1e718..00000000
--- a/build.vc15/python.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-@echo off
-"c:\program files\python34\python" %1
diff --git a/build.vc15/readme.txt b/build.vc15/readme.txt
deleted file mode 100644
index b4f14831..00000000
--- a/build.vc15/readme.txt
+++ /dev/null
@@ -1,177 +0,0 @@
-
-Building GMP-ECM with Microsoft Visual C++ 2017
-===============================================
-
-If you wish to build the assembler code support you will need to 
-install the YASM assembler that is available at:
-
-    http://www.tortall.net/projects/yasm/
-
-THe version you need is vsyasm, which should be put it in the directory
-
-    C:\Program Files\yasm
-
-Alternatively vsyasm can be installed anywhere provided the environment
-variable YASMPATH is set to its absolute file path.
-
-The Multi-Precision Library - GMP and MPIR
-==========================================
-
-GMP-ECM works with either GMP or MPIR, a fork of GMP. To build and run
-GMP-ECM using Visual Studio you first need to obtain and build either 
-GMP or MPIR.   MPIR has a fully integrated Visual Studio build system
-for Windows but GMP does not.  
-
-The VC++ build of GMP-ECM now defaults to MPIR but the property sheet 
-mp_lib.vsprops can be edited to set the macro mp_lib to 'gmp' instead 
-of 'mpir' to build ECM using GMP.
-
-GMP
-===
-
-GMP can be built from the GMP source code available here:
-
-  http://gmplib.org/
-  
-GMP can be built with mingw for 32-bit Windows and mingw64 for Windows x64.
-It is reported that the resulting libraries work with Visual Studio when
-appropriately renamed. 
-
-MPIR
-====
-
-MPIR is available here:
-
-  http://www.mpir.org
-  
-It has full support for building MPIR for 32 and 64 bit Windows systems 
-with x86 assembler support using the YASM assembler.  
-
-Building GMP-ECM
-================
-
-The build files for GMP-ECM assume that the GMP and ECM build directories
-are in a common parent directory as follows:
-
-  Parent Directory
-    MPIR (or GMP)
-      build.vc15    -- MPIR (or GMP) build files
-      ...
-    GMP-ECM
-      buid.vc15     -- ECM build files 
-      
-The root directories for GMP and GMP-ECM are assumed to have these names
-irrespective of which version is being used (they used to be followed by 
-version numbers but this meant that the build projects had to be updated
-too frequently). 
-
-The normal (non GPU) build is opened by loading the file ecm.sln (from 
-the build.vc14 directory) into Visual Studio. This provides these build
-projects in build.vc15 for the non GPU build:
-
-    ecm           - the ECM application 
-    ecmlib        - the ECM library
-    tune          - a program for tuning 
-    bench_mulredc - for benchmarking mulredc 
-    multiecm      - work in progress (not working)
-
-The GPU build is opened by loading the file ecm.sln (from  the build.vc14
-directory) into Visual Studio. This provides two build projects in 
-build.vc15:
-
-    ecm_gpu     - the ECM application 
-    ecmlib_gpu  - the ECM library
-
-In all cases you have to choose either a win32 or x64 build and either a
-Release or Debug configuration (however the win32 builds are no longer 
-actively supported and may not work). 
-
-The non GPU Build
------------------
-
-Before starting a build, there are a number of configuration options
-that need to be set:
-
-1. If you wish to compile GMP-ECM for use on a particular processor,
-   select the appropriate define from the file 'ecm-params.h' in the
-   GMP-ECM root directory and decide which of the defines suit your
-   needs (e.g. __tune_corei7__).  Then replace the existing define:
-   
-   /* define Windows tuning here */
-   #  define __tune_corei7__
- 
-   towards the end of the file config.h file in the 'build.vc14'
-   directory (build.vc14\config.h) with the chosen define.
-
-2. The file at 'build.vc14\mul_fft-params.h' allows the FFT code to
-   be tuned to 32 or 64-bit systems by selecting an option by 
-   changing the appropriate '#elif 0' to #elif 1'.   If you wish to 
-   use the win32 AMD assembler files, you also have to use the 
-   Visual Studio property page to define AMD_ASM (alternatively
-   you can edit the two files mulredc.asm and redc.asm in the 
-   build.vc14\assembler\ directory to include the AMD assembler).
-
-The GPU Build
--------------
-
-1. If you wish to build with a GPU capability you will need to 
-   install Nvidia Nsight for Visual Studio version 5.4 and the
-   CUDA Toolkit v9.0.  You can then build the libecm_gpu and
-   ecm_gpu projects
-   
-2. The choices above for the non GPU build aslo apply when
-   building for a GPU based system. 
-   
-   By default, the GPU  configuration is "compute_50,sm_50". If
-   you need to change this, select libecm_gpu and ecm_gpu and 
-   set the propertiesfor "CUDA C/C++|Device|Code Generation" for
-   your GPU capability. 
-   
-   Also under "C/C++|Preprocessor|Preprocessor Definitions" for 
-   both these projects, change the current definition GPU_CC50 to 
-   that for your GPU capability
-
-Build Configurations
---------------------
-
-When a version of ecm and ecmlib are built, the library and the application
-are put in the directory matching the configuration that has been built:
-
-    GMP-ECM
-      build.vc15    -- ECM build files 
-      lib           -- ECM static library files
-      bin           -- ECM executable files
-      
-within these lib, dll and bin directories, the outputs are located in
-sub-directories determined by the platform and configuration:
- 
-   win32\release
-   win32\debug
-   x64\release
-   x64\debug
-
-If you don't want assembler support you need to change the define:      
-
-#define NATIVE_REDC   1         
-
-in config.h (in the build.vc14 subdirectory) to: 
-
-#undef NATIVE_REDC
-
-Tune
-====
-
-If tune is compiled and run for a particular configuration it will output
-suitable values for optimising GMP-ECM to the console window.  To optimise
-GMP-ECM these values should be put in a suitably named file whcih then has
-to be integrated in ecm-params.h.
-
-Tests
-=====
-
-The file test.py is a python script that runs the ECM tests. It runs the
-x64/release-amd (non GPU) version by default but can be edited to test other
-builds.  It cannot run some tests as a result of the diifficulty in the
-conversion of the Unix shell scripts for the tests for use on Windows. 
-
-    Brian Gladman, November 2017
diff --git a/build.vc15/test.ecm.save b/build.vc15/test.ecm.save
deleted file mode 100644
index 40b4fb1f..00000000
--- a/build.vc15/test.ecm.save
+++ /dev/null
@@ -1 +0,0 @@
-METHOD=ECM; PARAM=0; SIGMA=585928442; B1=174000; N=17061648125571273329563156588435816942778260706938821014533; X=0x1a2a694df04a5c037fd12f42668b474f16b7818933f4c8484; CHECKSUM=1505596339; PROGRAM=GMP-ECM 7.0-dev; Y=0x0; X0=0x0; Y0=0x0; WHO=brian@MEGA-SLAVE; TIME=Fri Feb 13 09:01:45 2015;
diff --git a/build.vc15/tests.py b/build.vc15/tests.py
deleted file mode 100644
index 1a1a6a30..00000000
--- a/build.vc15/tests.py
+++ /dev/null
@@ -1,150 +0,0 @@
-
-from __future__ import print_function
-import os
-import sys
-import string
-import platform
-from re import match
-from subprocess import Popen, PIPE, STDOUT
-from tempfile import *
-
-try:
-  from time import perf_counter as timer
-except ImportError:
-  from time import clock as timer
-  
-
-x64 = True
-debug = False
-test_gpu_version = True
-run_non_gpu_tests = True
-run_gpu_tests = True
-
-class Timer() :
-  def __enter__(self): self.start = timer()
-  def __exit__(self, *args): print(' time {:.3f} milliseconds'.format(1000 * (timer() - self.start)))
-
-cpath = os.path.dirname(__file__)
-config = 'x64' if x64 else 'Win32'
-mode = 'Debug' if debug else 'Release'
-test_dir = '..\\bin\\{:s}\\{:s}\\'.format(config, mode)
-
-def get_tests(filename):
-  print('running tests in {:s}'.format(filename))
-  start, sub, tests, c_tests = True, dict(), [], []
-  with open(os.path.join(cpath, filename)) as f:
-    lines = f.readlines()
-    cnt, lnth = 0, len(lines)
-    while cnt < lnth:
-      try:
-        line = lines[cnt].strip()
-        cnt += 1
-        tkns = line.split()
-        if line.startswith('echo') and len(tkns) > 2 and tkns[2] == '|':
-          while cnt < lnth and 'checkcode' not in line:
-            while cnt < lnth and not lines[cnt]:
-              cnt += 1
-            if cnt < lnth:
-              line += '|' + lines[cnt]
-              cnt += 1
-          start = False
-        elif start:
-          sp = line.split('="')
-          if len(sp) == 2:
-            if sp[1].startswith('${1:-./ecm}'):
-              sub[sp[0]] = sp[1][12:-1]
-            else:
-              sub[sp[0]] = sp[1][:-1]
-          continue
-        else:
-          continue
-        line = line.replace(';', '|')
-        sub_tests = []
-        for line_part in line.split('|'):
-          tkns = line_part.strip().split()
-          cmd =  []
-          for tok in tkns:
-            if tok.startswith('"') and tok.endswith('"'):
-              tok = tok[1:-1]
-            if tok[0] == '$' and tok[1:] in sub:
-              tok = tok.replace(tok, sub[tok[1:]])
-            elif tok == './ecm':
-              tok = ''
-            cmd += [tok]
-          cseq = []
-          if cmd and cmd[0] == 'echo':
-            cseq += [cmd[1]]
-            cmd = cmd[2:]
-          if len(cmd) >= 3 and cmd[-3] == 'checkcode' and cmd[-2] == '$?':
-            cseq += [int(cmd[-1])]
-            cmd = cmd[:-3]
-          cmd = (' '.join(cmd)).strip()
-          if cmd:
-            cseq += [cmd]
-          sub_tests += [cseq]
-        if len(sub_tests) == 3 and all(len(x) == 1 for x in sub_tests):
-          tests += [tuple(x[0] for x in sub_tests)]
-        else:
-          c_tests += [sub_tests]
-      except ValueError:
-        print('parsing error on line {} in text "{}"'.format(cnt, line))
-  return tests, c_tests
-
-def run_exe(exe, args, inp) :
-  al = {'stdin' : PIPE, 'stdout' : PIPE, 'stderr' : STDOUT }
-  if sys.platform.startswith('win'):
-    al['creationflags'] = 0x08000000
-  p = Popen([os.path.join(cpath, exe)] + args.split(' '), **al)
-  res = p.communicate(inp.encode())[0].decode()
-  ret = p.poll()
-  return (ret, res)
-
-def output_complex_tests(x):
-  print('these tests are too complex:')
-  for t in x:
-    print(t)
-
-def do_tests(tests, ctests, out=False, gpu=False):
-  ecm_exe  = test_dir + ("ecm_gpu.exe" if gpu else "ecm.exe")
-  err_cnt = 0
-  for ix, tt in enumerate(tests):
-    print(tt[1], tt[0], end='')
-    rv = run_exe(ecm_exe, tt[1], tt[0])
-    if type(tt[2]) == int and rv[0] != tt[2]:
-      print(" - *** ERROR in test {:d}: {:d} {:d} ***".format(ix, rv[0], tt[2]))
-      err_cnt += 1
-    elif type(tt[2]) == tuple and rv[0] != tt[2][0] and rv[0] != tt[2][1]:
-      print(" - *** ERROR in test {:d}: {:d} {:s} ***".format(ix, rv[0], tt[2]))
-      err_cnt += 1
-    else:
-      print(" - passed")
-    if out:
-      op = rv[1].rsplit('\r\n')
-      for i in op :
-        print(i)
-
-  if ctests:
-    output_complex_tests(ctests)
-  if not err_cnt:
-    if ctests:
-      print('all other tests passed')
-    else:
-      print('all tests passed')
-
-with Timer():
-  if os.path.exists('test.pm1.save'):
-    os.remove('test.pm1.save')
-  if run_non_gpu_tests:
-    t, ct = get_tests("..\\test.ecm")
-    do_tests(t, ct)
-    t, ct = get_tests("..\\test.pm1")
-    do_tests(t, ct)
-    t, ct = get_tests("..\\test.pp1")
-    do_tests(t, ct)
-    t, ct = get_tests("..\\testlong.pp1")
-    do_tests(t, ct)
-    t, ct = get_tests("..\\testlong.pm1")
-    do_tests(t, ct)
-  if run_gpu_tests:
-    t, ct = get_tests("..\\test.gpuecm")
-    do_tests(t, ct, gpu=True)
diff --git a/build.vc15/tune.txt b/build.vc15/tune.txt
deleted file mode 100644
index a330c7ec..00000000
--- a/build.vc15/tune.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-#define LIST_MUL_TABLE {0,0,0,0,0,0,0,0,0,0,3,3,3,3,1,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3}
-#define MPZMOD_THRESHOLD 25
-#define REDC_THRESHOLD 512
-#define MPN_MUL_LO_THRESHOLD_TABLE {0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 1, 1, 1}
-#define NTT_GFP_TWIDDLE_DIF_BREAKOVER 17
-#define NTT_GFP_TWIDDLE_DIT_BREAKOVER 16
-#define MUL_NTT_THRESHOLD 262144
-#define PREREVERTDIVISION_NTT_THRESHOLD 131072
-#define POLYINVERT_NTT_THRESHOLD 262144
-#define POLYEVALT_NTT_THRESHOLD 32768
-#define MPZSPV_NORMALISE_STRIDE 512
diff --git a/build.vc15/tune/Makefile.am b/build.vc15/tune/Makefile.am
deleted file mode 100644
index fe8ca5e2..00000000
--- a/build.vc15/tune/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = tune.vcxproj tune.vcxproj.filters
diff --git a/build.vc15/tune/tune.vcxproj b/build.vc15/tune/tune.vcxproj
deleted file mode 100644
index ec7e8271..00000000
--- a/build.vc15/tune/tune.vcxproj
+++ /dev/null
@@ -1,164 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{80E08750-5C6C-492E-BB1E-7200978AE125}</ProjectGuid>
-    <RootNamespace>tune</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-    <PlatformToolset>v141</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="..\vsyasm.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\mp_lib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)$(IntDir);..\..\;..\assembler;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;TUNE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)$(IntDir)$(mp_lib);%(AdditionalDependencies)</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>
-      </Command>
-    </PostBuildEvent>
-    <YASM>
-      <Defines>
-      </Defines>
-      <ObjectFile>$(IntDir)%(FileName).obj</ObjectFile>
-    </YASM>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\..\..\$(mp_dir)$(IntDir);..\..\;..\assembler;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WIN64;NDEBUG;_CONSOLE;TUNE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\$(mp_dir)$(IntDir)$(mp_lib);%(AdditionalDependencies)</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>
-      </Command>
-    </PostBuildEvent>
-    <YASM>
-      <Defines>_WIN64</Defines>
-      <ObjectFile>$(IntDir)%(FileName).obj</ObjectFile>
-    </YASM>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm" />
-    <YASM Include="..\assembler\redc.asm" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxarith.c" />
-    <ClCompile Include="..\..\auxlib.c" />
-    <ClCompile Include="..\..\ecm_ntt.c" />
-    <ClCompile Include="..\..\ks-multiply.c" />
-    <ClCompile Include="..\..\listz.c" />
-    <ClCompile Include="..\..\median.c" />
-    <ClCompile Include="..\..\mpmod.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TUNE_MULREDC_THRESH#0;TUNE_SQRREDC_THRESH#0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TUNE_MULREDC_THRESH#0;TUNE_SQRREDC_THRESH#0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspm.c" />
-    <ClCompile Include="..\..\mpzspv.c" />
-    <ClCompile Include="..\..\mul_lo.c" />
-    <ClCompile Include="..\..\ntt_gfp.c" />
-    <ClCompile Include="..\..\polyeval.c" />
-    <ClCompile Include="..\..\random.c" />
-    <ClCompile Include="..\..\schoen_strass.c" />
-    <ClCompile Include="..\..\sp.c" />
-    <ClCompile Include="..\..\spm.c" />
-    <ClCompile Include="..\..\spv.c" />
-    <ClCompile Include="..\..\tune.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h" />
-    <ClInclude Include="..\..\ecm-params.h" />
-    <ClInclude Include="..\config.h" />
-    <ClInclude Include="..\..\ecm-ecm.h" />
-    <ClInclude Include="..\..\ecm-gmp.h" />
-    <ClInclude Include="..\..\ecm-impl.h" />
-    <ClInclude Include="..\..\ecm.h" />
-    <ClInclude Include="..\..\longlong.h" />
-    <ClInclude Include="..\..\sp.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libecm\libecm.vcxproj">
-      <Project>{cd555681-d65b-4173-a29c-b8bf06a4871b}</Project>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="..\vsyasm.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc15/tune/tune.vcxproj.filters b/build.vc15/tune/tune.vcxproj.filters
deleted file mode 100644
index dff0286b..00000000
--- a/build.vc15/tune/tune.vcxproj.filters
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Source Files\Assembler">
-      <UniqueIdentifier>{38f1a18f-40fc-4eed-a68e-e79b58327b6c}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <YASM Include="..\assembler\mulredc.asm">
-      <Filter>Source Files\Assembler</Filter>
-    </YASM>
-    <YASM Include="..\assembler\redc.asm">
-      <Filter>Source Files\Assembler</Filter>
-    </YASM>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\auxarith.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\auxlib.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ecm_ntt.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ks-multiply.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\listz.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\median.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpmod.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mpzspv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\mul_lo.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\ntt_gfp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\polyeval.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\random.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\schoen_strass.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\sp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\spv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tune.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-impl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\longlong.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\sp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\ecm-params.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\mpir\lib\x64\release\gmp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc15/vacopy.c b/build.vc15/vacopy.c
deleted file mode 100644
index d6a3d81a..00000000
--- a/build.vc15/vacopy.c
+++ /dev/null
@@ -1,8 +0,0 @@
-
-#include <stdarg.h>
-#include <string.h>
-
-void _vacopy(va_list *pap, va_list ap)
-{
-    *pap = ap;
-}
diff --git a/build.vc15/vsyasm.props b/build.vc15/vsyasm.props
deleted file mode 100644
index a3678c6c..00000000
--- a/build.vc15/vsyasm.props
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup
-    Condition="'$(YASMBeforeTargets)' == '' and '$(YASMAfterTargets)' == '' and '$(ConfigurationType)' != 'Makefile'">
-    <YASMBeforeTargets>Midl</YASMBeforeTargets>
-    <YASMAfterTargets>CustomBuild</YASMAfterTargets>
-  </PropertyGroup>
-  <PropertyGroup>
-    <YASMDependsOn
-      Condition="'$(ConfigurationType)' != 'Makefile'">_SelectedFiles;$(YASMDependsOn)</YASMDependsOn>
-  </PropertyGroup>
-  <PropertyGroup>
-    <YasmPath Condition= "'$(YASMPATH)' == ''">C:\Program Files\yasm\</YasmPath>
-  </PropertyGroup>
-  <ItemDefinitionGroup>
-    <YASM>
-      <Debug>False</Debug>
-      <ObjectFile>$(IntDir)%(FileName).obj</ObjectFile>
-      <PreProc>0</PreProc>
-      <Parser>0</Parser>
-      <CommandLineTemplate>"$(YasmPath)"vsyasm.exe -Xvc -f $(Platform) [AllOptions] [AdditionalOptions] [Inputs]</CommandLineTemplate>
-      <Outputs>%(ObjectFile)</Outputs>
-      <ExecutionDescription>Assembling %(Filename)%(Extension) ==> $(IntDir)%(FileName).obj</ExecutionDescription>
-      <ShowOnlyRuleProperties>false</ShowOnlyRuleProperties>
-    </YASM>
-  </ItemDefinitionGroup>
-</Project>
\ No newline at end of file
diff --git a/build.vc15/vsyasm.targets b/build.vc15/vsyasm.targets
deleted file mode 100644
index 9a333f9e..00000000
--- a/build.vc15/vsyasm.targets
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-
-  <ItemGroup>
-    <PropertyPageSchema
-      Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
-    <AvailableItemName
-      Include="YASM">
-      <Targets>_YASM</Targets>
-    </AvailableItemName>
-  </ItemGroup>
-
-  <PropertyGroup>
-    <ComputeLinkInputsTargets>
-      $(ComputeLinkInputsTargets);
-      ComputeYASMOutput;
-    </ComputeLinkInputsTargets>
-    <ComputeLibInputsTargets>
-      $(ComputeLibInputsTargets);
-      ComputeYASMOutput;
-    </ComputeLibInputsTargets>
-  </PropertyGroup>
-
-  <UsingTask
-    TaskName="YASM"
-    TaskFactory="XamlTaskFactory"
-    AssemblyName="Microsoft.Build.Tasks.v4.0">
-    <Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task>
-  </UsingTask>
-
-  <Target Name="_WriteYASMTlogs"
-          Condition="'@(YASM)' != '' and '@(SelectedFiles)' == ''">
-
-    <ItemGroup>
-      <_YASMReadTlog 
-        Include="^%(YASM.FullPath);%(YASM.AdditionalDependencies)"
-        Condition="'%(YASM.ExcludedFromBuild)' != 'true' and '%(YASM.ObjectFile)' != ''"/>
-      <_YASMWriteTlog 
-        Include="^%(YASM.FullPath);$([MSBuild]::NormalizePath('$(MSBuildProjectDirectory)', '%(YASM.ObjectFile)'))" 
-        Condition="'%(YASM.ExcludedFromBuild)' != 'true' and '%(YASM.ObjectFile)' != ''"/>
-    </ItemGroup>
-
-    <WriteLinesToFile
-      Condition="'@(_YASMReadTlog)' != ''"
-      File="$(TLogLocation)YASM.read.1u.tlog"
-      Lines="@(_YASMReadTlog->MetaData('Identity')->ToUpperInvariant());"
-      Overwrite="true"
-      Encoding="Unicode"/>
-
-    <WriteLinesToFile
-      Condition="'@(_YASMWriteTlog)' != ''"
-      File="$(TLogLocation)YASM.write.1u.tlog"
-      Lines="@(_YASMWriteTlog->MetaData('Identity')->ToUpperInvariant());"
-      Overwrite="true"
-      Encoding="Unicode"/>
-
-    <ItemGroup>
-      <_YASMReadTlog Remove="@(_YASMReadTlog)" />
-      <_YASMWriteTlog Remove="@(_YASMWriteTlog)" />
-    </ItemGroup>
-
-  </Target>
- 
-  <Target
-    Name="_YASM"
-    BeforeTargets="$(YASMBeforeTargets)"
-    AfterTargets="$(YASMAfterTargets)"
-    Condition="'@(YASM)' != ''"
-    Inputs="%(YASM.Identity);%(YASM.AdditionalDependencies);$(MSBuildProjectFile)"
-    Outputs="%(YASM.ObjectFile)"
-    DependsOnTargets="PrepareForBuild;_WriteYasmTlogs;_SelectedFiles;$(YASMDependsOn);">
-
-    <ItemGroup Condition="'@(SelectedFiles)' != ''">
-      <YASM Remove="@(YASM)" Condition="'%(Identity)' != '@(SelectedFiles)'" />
-    </ItemGroup>
-
-    <Message
-      Importance="High"
-      Text="%(YASM.ExecutionDescription)" />
-
-    <YASM
-      Condition="'@(YASM)' != '' and '%(YASM.ExcludedFromBuild)' != 'true'"
-      CommandLineTemplate="%(YASM.CommandLineTemplate)"
-      Debug="%(YASM.Debug)"
-      PreIncludeFile="%(YASM.PreIncludeFile)"
-      IncludePaths="%(YASM.IncludePaths)"
-      Defines="%(YASM.Defines)"
-      UnDefines="%(YASM.UnDefines)"
-      ObjectFile="%(YASM.ObjectFile)"
-      ListFile="%(YASM.ListFile)"
-      MapFile="%(YASM.MapFile)"
-      ErrorFile="%(YASM.ErrorFile)"
-      SymbolPrefix="%(YASM.SymbolPrefix)"
-      SymbolSuffix="%(YASM.SymbolSuffix)"
-      PreProc="%(YASM.PreProc)"
-      Parser="%(YASM.Parser)"
-      AdditionalOptions="%(YASM.AdditionalOptions)"
-      Inputs="%(YASM.Identity)" />
-  </Target>
-  
-  <Target
-    Name="ComputeYASMOutput"
-    Condition="'@(YASM)' != ''">
-    <ItemGroup>
-      <Link Include="@(YASM->Metadata('ObjectFile')->Distinct()->ClearMetadata())" Condition="'%(YASM.ExcludedFromBuild)' != 'true'"/>
-      <Lib Include="@(YASM->Metadata('ObjectFile')->Distinct()->ClearMetadata())" Condition="'%(YASM.ExcludedFromBuild)' != 'true'"/>
-    </ItemGroup>
-  </Target>
-
-</Project>
\ No newline at end of file
diff --git a/build.vc15/vsyasm.xml b/build.vc15/vsyasm.xml
deleted file mode 100644
index 0b259559..00000000
--- a/build.vc15/vsyasm.xml
+++ /dev/null
@@ -1,283 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<ProjectSchemaDefinitions xmlns="clr-namespace:Microsoft.Build.Framework.XamlTypes;assembly=Microsoft.Build.Framework" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:transformCallback="Microsoft.Cpp.Dev10.ConvertPropertyCallback">
-  <Rule
-    Name="YASM"
-    PageTemplate="tool"
-    DisplayName="Yasm Assembler"
-    Order="200">
-      
-    <Rule.DataSource>
-      <DataSource
-        Persistence="ProjectFile"
-        ItemType="YASM" />
-    </Rule.DataSource>
-      
-    <Rule.Categories>
-        
-      <Category
-        Name="General">
-        <Category.DisplayName>
-          <sys:String>General</sys:String>
-        </Category.DisplayName>
-      </Category>
-
-      <Category
-        Name="Symbols">
-          <Category.DisplayName>
-              <sys:String>Symbols</sys:String>
-          </Category.DisplayName>
-      </Category>
-
-      <Category
-        Name="Files">
-          <Category.DisplayName>
-              <sys:String>Files</sys:String>
-          </Category.DisplayName>
-      </Category>
-        
-      <Category
-        Name="Command Line"
-        Subtype="CommandLine">
-        <Category.DisplayName>
-          <sys:String>Command Line</sys:String>
-        </Category.DisplayName>
-      </Category>
-        
-    </Rule.Categories>
-
-    <StringListProperty
-      Name="Inputs"
-      Category="Command Line"
-      IsRequired="true"
-      Switch=" ">
-      <StringListProperty.DataSource>
-        <DataSource
-          Persistence="ProjectFile"
-          ItemType="YASM"
-          SourceType="Item" />
-      </StringListProperty.DataSource>
-    </StringListProperty>
-    
-    <BoolProperty
-      Name="Debug"
-      Subcategory="Configuration"
-      HelpContext="0"
-      DisplayName="Debug Information"
-      Description="Generate debugging information"
-      Switch="-g cv8" />
-
-    <StringListProperty
-      Name="IncludePaths"
-      Subcategory="Configuration"
-      HelpContext="0"
-      DisplayName="Include Paths"
-      Description="Set the paths for any additional include files"
-      Switch="-i &quot;[value]&quot;" />
-
-    <StringListProperty
-      Name="Defines"
-      Category="Symbols"
-      Subcategory="Pre-Defined Symbols"
-      HelpContext="0"
-      DisplayName="Defined Symbols"
-      Description="Specify pre-defined symbols ('symbol' or 'symbol = value') "
-      Switch="-d &quot;[value]&quot;" />
-    
-    <StringListProperty
-      Name="UnDefines"
-      Category="Symbols"
-      Subcategory="Pre-Defined Symbols"
-      HelpContext="0"
-      DisplayName="Remove Symbols"
-      Description="Remove pre-defined symbols "
-      Switch="-u &quot;[value]&quot;" />
-    
-    <StringProperty
-      Name="ObjectFile"
-      Subcategory="Output"
-      HelpContext="0"
-      DisplayName="Object File Name"
-      Description="Select the output file name"
-      Switch="-o &quot;[value]&quot;" />
-    
-    <StringProperty
-      Name="ListFile"
-      Category="Files"
-      Subcategory="Output"
-      HelpContext="0"
-      DisplayName="List File Name"
-      Description="Select an output listing by setting its file name"
-      Switch="-l &quot;[value]&quot;" />
-    
-    <StringProperty
-      Name="PreIncludeFile"
-      Category="Files"
-      Subcategory="Configuration"
-      HelpContext="0"
-      DisplayName="Pre Include File"
-      Description="Select a pre-included file by setting its name"
-      Switch="-P &quot;[value]&quot;" />
-      
-    <StringProperty
-      Name="MapFile"
-      Category="Files"
-      Subcategory="Output"
-      HelpContext="0"
-      DisplayName="Map File Name"
-      Description="Select a map output by setting its file name"
-      Switch="--mapdir=&quot;[value]&quot;" />
-
-    <StringProperty
-      Name="ErrorFile"
-      Category="Files"
-      Subcategory="Output"
-      HelpContext="0"
-      DisplayName="Error File Name"
-      Description="Send error/warning messages to a file by setting its name"
-      Switch="-E &quot;[value]&quot;" />
-
-    <StringProperty
-      Name="SymbolPrefix"
-      Category="Symbols"
-      Subcategory="Symbols"
-      HelpContext="0"
-      DisplayName="External Symbol Prefix"
-      Description="Prepend symbol to all external symbols"
-      Switch="--prefix=&quot;[value]&quot;" />
-
-    <StringProperty
-      Name="SymbolSuffix"
-      Category="Symbols"
-      Subcategory="Symbols"
-      HelpContext="0"
-      DisplayName="External Symbol Suffix"
-      Description="Append symbol to all external symbols"
-      Switch="--suffix=&quot;[value]&quot;" />
-
-    <EnumProperty
-      Name="PreProc"
-      Subcategory="Configuration"
-      HelpContext="0"
-      DisplayName="Pre-Processor"
-      Description="Select the pre-processor ('nasm' or 'raw')">
-      <EnumValue
-        Name="0"
-        DisplayName="Nasm "
-        Switch="-rnasm" />
-      <EnumValue
-        Name="1"
-        DisplayName="Raw"
-        Switch="-rraw" />
-    </EnumProperty>
-    
-    <EnumProperty
-      Name="Parser"
-      Subcategory="Configuration"
-      HelpContext="0"
-      DisplayName="Parser"
-      Description="Select the parser for Intel ('nasm') or AT&amp;T ( 'gas') syntax">
-      <EnumValue
-        Name="0"
-        DisplayName="Nasm"
-        Switch="-pnasm" />
-      <EnumValue
-        Name="1"
-        DisplayName="Gas"
-        Switch="-pgas" />
-    </EnumProperty>
-    
-    <StringProperty
-      Name="CommandLineTemplate"
-      DisplayName="Command Line"
-      Visible="False"
-      IncludeInCommandLine="False" />
-    
-    <DynamicEnumProperty
-      Name="YASMBeforeTargets"
-      Category="General"
-      EnumProvider="Targets"
-      IncludeInCommandLine="False">
-      <DynamicEnumProperty.DisplayName>
-        <sys:String>Execute Before</sys:String>
-      </DynamicEnumProperty.DisplayName>
-      <DynamicEnumProperty.Description>
-        <sys:String>Specifies the targets for the build customization to run before.</sys:String>
-      </DynamicEnumProperty.Description>
-      <DynamicEnumProperty.ProviderSettings>
-        <NameValuePair
-          Name="Exclude"
-          Value="^YASMBeforeTargets|^Compute" />
-      </DynamicEnumProperty.ProviderSettings>
-      <DynamicEnumProperty.DataSource>
-        <DataSource
-          Persistence="ProjectFile"
-          HasConfigurationCondition="true" />
-      </DynamicEnumProperty.DataSource>
-    </DynamicEnumProperty>
-    
-    <DynamicEnumProperty
-      Name="YASMAfterTargets"
-      Category="General"
-      EnumProvider="Targets"
-      IncludeInCommandLine="False">
-      <DynamicEnumProperty.DisplayName>
-        <sys:String>Execute After</sys:String>
-      </DynamicEnumProperty.DisplayName>
-      <DynamicEnumProperty.Description>
-        <sys:String>Specifies the targets for the build customization to run after.</sys:String>
-      </DynamicEnumProperty.Description>
-      <DynamicEnumProperty.ProviderSettings>
-        <NameValuePair
-          Name="Exclude"
-          Value="^YASMAfterTargets|^Compute" />
-      </DynamicEnumProperty.ProviderSettings>
-      <DynamicEnumProperty.DataSource>
-        <DataSource
-          Persistence="ProjectFile"
-          ItemType=""
-          HasConfigurationCondition="true" />
-      </DynamicEnumProperty.DataSource>
-    </DynamicEnumProperty>
-    
-    <StringListProperty
-      Name="Outputs"
-      DisplayName="Outputs"
-      Visible="False"
-      IncludeInCommandLine="False" />
-    
-    <StringProperty
-      Name="ExecutionDescription"
-      DisplayName="Execution Description"
-      Visible="False"
-      IncludeInCommandLine="False" />
-    
-    <StringListProperty
-      Name="AdditionalDependencies"
-      DisplayName="Additional Dependencies"
-      IncludeInCommandLine="False"
-      Visible="true" />
-    
-    <StringProperty
-      Subtype="AdditionalOptions"
-      Name="AdditionalOptions"
-      Category="Command Line">
-      <StringProperty.DisplayName>
-        <sys:String>Additional Options</sys:String>
-      </StringProperty.DisplayName>
-      <StringProperty.Description>
-        <sys:String>Additional Options</sys:String>
-      </StringProperty.Description>
-    </StringProperty>
-  </Rule>
-  
-  <ItemType
-    Name="YASM"
-    DisplayName="Yasm Assembler" />
-  <FileExtension
-    Name="*.asm"
-    ContentType="YASM" />
-  <ContentType
-    Name="YASM"
-    DisplayName="Yasm Assembler"
-    ItemType="YASM" />
-</ProjectSchemaDefinitions>
\ No newline at end of file
-- 
GitLab