aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/gmp
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/gmp')
-rw-r--r--vcpkg/ports/gmp/arm64-coff.patch73
-rw-r--r--vcpkg/ports/gmp/asmflags.patch46
-rw-r--r--vcpkg/ports/gmp/c23.patch37
-rw-r--r--vcpkg/ports/gmp/cross-tools.patch113
-rw-r--r--vcpkg/ports/gmp/msvc_symbol.patch28
-rw-r--r--vcpkg/ports/gmp/portfile.cmake133
-rw-r--r--vcpkg/ports/gmp/remove_compiler_info.patch15
-rw-r--r--vcpkg/ports/gmp/subdirs.patch13
-rw-r--r--vcpkg/ports/gmp/usage11
-rw-r--r--vcpkg/ports/gmp/vcpkg.json25
10 files changed, 494 insertions, 0 deletions
diff --git a/vcpkg/ports/gmp/arm64-coff.patch b/vcpkg/ports/gmp/arm64-coff.patch
new file mode 100644
index 0000000..67bf5bf
--- /dev/null
+++ b/vcpkg/ports/gmp/arm64-coff.patch
@@ -0,0 +1,73 @@
+diff --git a/configure.ac b/configure.ac
+index bd92bc4..bd2c0af 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -3704,6 +3704,8 @@ if test "$gmp_asm_syntax_testing" != no; then
+ case $host in
+ *-*-darwin*)
+ GMP_INCLUDE_MPN(arm64/darwin.m4) ;;
++ *-pc-mingw32)
++ GMP_INCLUDE_MPN(arm64/coff.m4) ;;
+ *)
+ GMP_INCLUDE_MPN(arm64/arm64-defs.m4) ;;
+ esac
+diff --git a/mpn/arm64/coff.m4 b/mpn/arm64/coff.m4
+new file mode 100644
+index 0000000..88605b3
+--- /dev/null
++++ b/mpn/arm64/coff.m4
+@@ -0,0 +1,54 @@
++divert(-1)
++
++dnl m4 macros for ARM64 COFF assembler.
++
++dnl Copyright 2020 Free Software Foundation, Inc.
++
++dnl This file is part of the GNU MP Library.
++dnl
++dnl The GNU MP Library is free software; you can redistribute it and/or modify
++dnl it under the terms of either:
++dnl
++dnl * the GNU Lesser General Public License as published by the Free
++dnl Software Foundation; either version 3 of the License, or (at your
++dnl option) any later version.
++dnl
++dnl or
++dnl
++dnl * the GNU General Public License as published by the Free Software
++dnl Foundation; either version 2 of the License, or (at your option) any
++dnl later version.
++dnl
++dnl or both in parallel, as here.
++dnl
++dnl The GNU MP Library is distributed in the hope that it will be useful, but
++dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
++dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++dnl for more details.
++dnl
++dnl You should have received copies of the GNU General Public License and the
++dnl GNU Lesser General Public License along with the GNU MP Library. If not,
++dnl see https://www.gnu.org/licenses/.
++
++
++dnl Standard commenting is with @, the default m4 # is for constants and we
++dnl don't want to disable macro expansions in or after them.
++
++changecom
++
++
++dnl LEA_HI(reg,gmp_symbol), LEA_LO(reg,gmp_symbol)
++dnl
++dnl Load the address of gmp_symbol into a register. We split this into two
++dnl parts to allow separation for manual insn scheduling.
++
++define(`LEA_HI', `ldr $1, =$2')dnl
++define(`LEA_LO')dnl
++
++dnl Usage: ALIGN(bytes)
++dnl
++dnl Emit a ".align" directive.
++
++define(`ALIGN', ` .align 8')dnl
++
++divert`'dnl
diff --git a/vcpkg/ports/gmp/asmflags.patch b/vcpkg/ports/gmp/asmflags.patch
new file mode 100644
index 0000000..f519b8c
--- /dev/null
+++ b/vcpkg/ports/gmp/asmflags.patch
@@ -0,0 +1,46 @@
+diff --git a/acinclude.m4 b/acinclude.m4
+index 86175ce42..8228d20dc 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -1649,7 +1649,7 @@ AC_DEFUN([GMP_TRY_ASSEMBLE],
+ [cat >conftest.s <<EOF
+ [$1]
+ EOF
+-gmp_assemble="$CCAS $CFLAGS $CPPFLAGS conftest.s >conftest.out 2>&1"
++gmp_assemble="$CCAS $CPPFLAGS $ASMFLAGS conftest.s >conftest.out 2>&1"
+ if AC_TRY_EVAL(gmp_assemble); then
+ cat conftest.out >&AC_FD_CC
+ ifelse([$2],,:,[$2])
+@@ -2382,7 +2382,7 @@ for tmp_underscore in "" "_"; do
+ ${tmp_gsym_prefix}main$gmp_cv_asm_label_suffix
+ addl $ ${tmp_underscore}_GLOBAL_OFFSET_TABLE_, %ebx
+ EOF
+- gmp_compile="$CCAS $CFLAGS $CPPFLAGS $lt_prog_compiler_pic conftest.s >&AC_FD_CC && $CC $CFLAGS $CPPFLAGS $lt_prog_compiler_pic conftest.$OBJEXT >&AC_FD_CC"
++ gmp_compile="$CCAS $CPPFLAGS $ASMFLAGS $lt_prog_compiler_pic conftest.s >&AC_FD_CC && $CC $CPPFLAGS $ASMFLAGS $lt_prog_compiler_pic conftest.$OBJEXT >&AC_FD_CC"
+ if AC_TRY_EVAL(gmp_compile); then
+ if test "$tmp_underscore" = "_"; then
+ gmp_cv_asm_x86_got_underscore=yes
+@@ -2556,7 +2556,7 @@ movq-bug)
+ AC_MSG_WARN([+----------------------------------------------------------])
+ AC_MSG_WARN([| WARNING WARNING WARNING])
+ AC_MSG_WARN([| Host CPU has MMX code, but the assembler])
+- AC_MSG_WARN([| $CCAS $CFLAGS $CPPFLAGS])
++ AC_MSG_WARN([| $CCAS $CPPFLAGS $ASMFLAGS])
+ AC_MSG_WARN([| has the Solaris 2.6 and 2.7 bug where register to register])
+ AC_MSG_WARN([| movq operands are reversed.])
+ AC_MSG_WARN([| Non-MMX replacements will be used.])
+diff --git a/mpn/Makeasm.am b/mpn/Makeasm.am
+index 5d7306c22..75692128d 100644
+--- a/mpn/Makeasm.am
++++ b/mpn/Makeasm.am
+@@ -31,8 +31,9 @@
+
+ # COMPILE minus CC.
+ #
++# Only used with CCAS
+ COMPILE_FLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) $(ASMFLAGS)
++ $(CPPFLAGS) $(ASMFLAGS)
+
+ # Flags used for preprocessing (in ansi2knr rules).
+ #
diff --git a/vcpkg/ports/gmp/c23.patch b/vcpkg/ports/gmp/c23.patch
new file mode 100644
index 0000000..38c18aa
--- /dev/null
+++ b/vcpkg/ports/gmp/c23.patch
@@ -0,0 +1,37 @@
+diff --git a/acinclude.m4 b/acinclude.m4
+index e84c5c785..8e7bb4ae7 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -564,23 +564,6 @@
+ }
+ ])
+
+-# __builtin_alloca is not available everywhere, check it exists before
+-# seeing that it works
+-GMP_PROG_CC_WORKS_PART_TEST([$1],[__builtin_alloca availability],
+-[int k; int foo () { __builtin_alloca (k); }],
+- [GMP_PROG_CC_WORKS_PART([$1], [alloca array],
+-[/* The following provokes an internal compiler error from Itanium HP-UX cc
+- under +O2 or higher. We use this sort of code in mpn/generic/mul_fft.c. */
+-int k;
+-int foo ()
+-{
+- int i, **a;
+- a = __builtin_alloca (k);
+- for (i = 0; i <= k; i++)
+- a[i] = __builtin_alloca (1 << i);
+-}
+-])])
+-
+ GMP_PROG_CC_WORKS_PART([$1], [abs int -> double conversion],
+ [/* The following provokes an internal error from the assembler on
+ power2-ibm-aix4.3.1.0. gcc -mrios2 compiles to nabs+fcirz, and this
+@@ -609,7 +609,7 @@
+
+ #if defined (__GNUC__) && ! defined (__cplusplus)
+ typedef unsigned long long t1;typedef t1*t2;
+-void g(){}
++void g(int,t1 const*,t1,t2,t1 const*,int){}
+ void h(){}
+ static __inline__ t1 e(t2 rp,t2 up,int n,t1 v0)
+ {t1 c,x,r;int i;if(v0){c=1;for(i=1;i<n;i++){x=up[i];r=x+1;rp[i]=r;}}return c;}
diff --git a/vcpkg/ports/gmp/cross-tools.patch b/vcpkg/ports/gmp/cross-tools.patch
new file mode 100644
index 0000000..422feca
--- /dev/null
+++ b/vcpkg/ports/gmp/cross-tools.patch
@@ -0,0 +1,113 @@
+diff --git a/Makefile.am b/Makefile.am
+index 03356e0..9651b59 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,3 +1,7 @@
++# Using native tools, either this build or from host triplet
++HOST_TOOLS_PREFIX ?= .
++CC_FOR_BUILD = $(CC) $(CPPFLAGS) $(CFLAGS)
++
+ ## Process this file with automake to generate Makefile.in
+
+
+@@ -345,8 +349,8 @@ install-data-hook:
+
+ EXTRA_DIST += bootstrap.c
+
+-fac_table.h: gen-fac$(EXEEXT_FOR_BUILD)
+- ./gen-fac $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >fac_table.h || (rm -f fac_table.h; exit 1)
++fac_table.h: $(HOST_TOOLS_PREFIX)/gen-fac$(EXEEXT_FOR_BUILD)
++ $(HOST_TOOLS_PREFIX)/gen-fac $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >fac_table.h || (rm -f fac_table.h; exit 1)
+ BUILT_SOURCES += fac_table.h
+
+ gen-fac$(EXEEXT_FOR_BUILD): gen-fac$(U_FOR_BUILD).c bootstrap.c
+@@ -354,8 +358,8 @@ gen-fac$(EXEEXT_FOR_BUILD): gen-fac$(U_FOR_BUILD).c bootstrap.c
+ DISTCLEANFILES += gen-fac$(EXEEXT_FOR_BUILD)
+ EXTRA_DIST += gen-fac.c
+
+-sieve_table.h: gen-sieve$(EXEEXT_FOR_BUILD)
+- ./gen-sieve $(GMP_LIMB_BITS) >sieve_table.h || (rm -f sieve_table.h; exit 1)
++sieve_table.h: $(HOST_TOOLS_PREFIX)/gen-sieve$(EXEEXT_FOR_BUILD)
++ $(HOST_TOOLS_PREFIX)/gen-sieve $(GMP_LIMB_BITS) >sieve_table.h || (rm -f sieve_table.h; exit 1)
+ BUILT_SOURCES += sieve_table.h
+
+ gen-sieve$(EXEEXT_FOR_BUILD): gen-sieve$(U_FOR_BUILD).c bootstrap.c
+@@ -364,12 +368,12 @@ DISTCLEANFILES += gen-sieve$(EXEEXT_FOR_BUILD)
+ EXTRA_DIST += gen-sieve.c
+
+
+-fib_table.h: gen-fib$(EXEEXT_FOR_BUILD)
+- ./gen-fib header $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >fib_table.h || (rm -f fib_table.h; exit 1)
++fib_table.h: $(HOST_TOOLS_PREFIX)/gen-fib$(EXEEXT_FOR_BUILD)
++ $(HOST_TOOLS_PREFIX)/gen-fib header $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >fib_table.h || (rm -f fib_table.h; exit 1)
+ BUILT_SOURCES += fib_table.h
+
+-mpn/fib_table.c: gen-fib$(EXEEXT_FOR_BUILD)
+- ./gen-fib table $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >mpn/fib_table.c || (rm -f mpn/fib_table.c; exit 1)
++mpn/fib_table.c: $(HOST_TOOLS_PREFIX)/gen-fib$(EXEEXT_FOR_BUILD)
++ $(HOST_TOOLS_PREFIX)/gen-fib table $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >mpn/fib_table.c || (rm -f mpn/fib_table.c; exit 1)
+ BUILT_SOURCES += mpn/fib_table.c
+
+ gen-fib$(EXEEXT_FOR_BUILD): gen-fib$(U_FOR_BUILD).c bootstrap.c
+@@ -378,12 +382,12 @@ DISTCLEANFILES += gen-fib$(EXEEXT_FOR_BUILD)
+ EXTRA_DIST += gen-fib.c
+
+
+-mp_bases.h: gen-bases$(EXEEXT_FOR_BUILD)
+- ./gen-bases header $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >mp_bases.h || (rm -f mp_bases.h; exit 1)
++mp_bases.h: $(HOST_TOOLS_PREFIX)/gen-bases$(EXEEXT_FOR_BUILD)
++ $(HOST_TOOLS_PREFIX)/gen-bases header $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >mp_bases.h || (rm -f mp_bases.h; exit 1)
+ BUILT_SOURCES += mp_bases.h
+
+-mpn/mp_bases.c: gen-bases$(EXEEXT_FOR_BUILD)
+- ./gen-bases table $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >mpn/mp_bases.c || (rm -f mpn/mp_bases.c; exit 1)
++mpn/mp_bases.c: $(HOST_TOOLS_PREFIX)/gen-bases$(EXEEXT_FOR_BUILD)
++ $(HOST_TOOLS_PREFIX)/gen-bases table $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >mpn/mp_bases.c || (rm -f mpn/mp_bases.c; exit 1)
+ BUILT_SOURCES += mpn/mp_bases.c
+
+ gen-bases$(EXEEXT_FOR_BUILD): gen-bases$(U_FOR_BUILD).c bootstrap.c
+@@ -392,8 +396,8 @@ DISTCLEANFILES += gen-bases$(EXEEXT_FOR_BUILD)
+ EXTRA_DIST += gen-bases.c
+
+
+-trialdivtab.h: gen-trialdivtab$(EXEEXT_FOR_BUILD)
+- ./gen-trialdivtab $(GMP_LIMB_BITS) 8000 >trialdivtab.h || (rm -f trialdivtab.h; exit 1)
++trialdivtab.h: $(HOST_TOOLS_PREFIX)/gen-trialdivtab$(EXEEXT_FOR_BUILD)
++ $(HOST_TOOLS_PREFIX)/gen-trialdivtab $(GMP_LIMB_BITS) 8000 >trialdivtab.h || (rm -f trialdivtab.h; exit 1)
+ BUILT_SOURCES += trialdivtab.h
+
+ gen-trialdivtab$(EXEEXT_FOR_BUILD): gen-trialdivtab$(U_FOR_BUILD).c bootstrap.c
+@@ -402,8 +406,8 @@ DISTCLEANFILES += gen-trialdivtab$(EXEEXT_FOR_BUILD)
+ EXTRA_DIST += gen-trialdivtab.c
+
+
+-mpn/jacobitab.h: gen-jacobitab$(EXEEXT_FOR_BUILD)
+- ./gen-jacobitab >mpn/jacobitab.h || (rm -f mpn/jacobitab.h; exit 1)
++mpn/jacobitab.h: $(HOST_TOOLS_PREFIX)/gen-jacobitab$(EXEEXT_FOR_BUILD)
++ $(HOST_TOOLS_PREFIX)/gen-jacobitab >mpn/jacobitab.h || (rm -f mpn/jacobitab.h; exit 1)
+ BUILT_SOURCES += mpn/jacobitab.h
+
+ gen-jacobitab$(EXEEXT_FOR_BUILD): gen-jacobitab$(U_FOR_BUILD).c
+@@ -412,8 +416,8 @@ DISTCLEANFILES += gen-jacobitab$(EXEEXT_FOR_BUILD)
+ EXTRA_DIST += gen-jacobitab.c
+
+
+-mpn/perfsqr.h: gen-psqr$(EXEEXT_FOR_BUILD)
+- ./gen-psqr $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >mpn/perfsqr.h || (rm -f mpn/perfsqr.h; exit 1)
++mpn/perfsqr.h: $(HOST_TOOLS_PREFIX)/gen-psqr$(EXEEXT_FOR_BUILD)
++ $(HOST_TOOLS_PREFIX)/gen-psqr $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >mpn/perfsqr.h || (rm -f mpn/perfsqr.h; exit 1)
+ BUILT_SOURCES += mpn/perfsqr.h
+
+ gen-psqr$(EXEEXT_FOR_BUILD): gen-psqr$(U_FOR_BUILD).c bootstrap.c
+diff --git a/acinclude.m4 b/acinclude.m4
+index aea4c38..aaef13a 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -3833,6 +3833,7 @@ if AC_TRY_EVAL(gmp_compile); then
+ if (./a.out || ./b.out || ./a.exe || ./a_out.exe || ./conftest) >&AC_FD_CC 2>&1; then
+ cc_for_build_works=yes
+ fi
++ cc_for_build_works=yes # forced
+ fi
+ rm -f conftest* a.out b.out a.exe a_out.exe
+ AC_MSG_RESULT($cc_for_build_works)
diff --git a/vcpkg/ports/gmp/msvc_symbol.patch b/vcpkg/ports/gmp/msvc_symbol.patch
new file mode 100644
index 0000000..a7dc88f
--- /dev/null
+++ b/vcpkg/ports/gmp/msvc_symbol.patch
@@ -0,0 +1,28 @@
+diff --git a/configure.ac b/configure.ac
+index cafdb3c..3c3e3c8 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -2702,9 +2702,7 @@ Use "--disable-static --enable-shared" to build just a DLL.])
+ # __isascii, but for some reason not the plain isascii.
+ #
+ if test "$enable_shared" = yes; then
+- GMP_LDFLAGS="$GMP_LDFLAGS -no-undefined -Wl,--export-all-symbols"
+- LIBGMP_LDFLAGS="$LIBGMP_LDFLAGS -Wl,--output-def,.libs/libgmp-3.dll.def"
+- LIBGMPXX_LDFLAGS="$LIBGMP_LDFLAGS -Wl,--output-def,.libs/libgmpxx-3.dll.def"
++ GMP_LDFLAGS="$GMP_LDFLAGS -no-undefined"
+ LIBGMP_DLL=1
+ fi
+ ;;
+diff --git a/gmp-h.in b/gmp-h.in
+index 3d449d4..18a03b7 100644
+--- a/gmp-h.in
++++ b/gmp-h.in
+@@ -398,7 +398,7 @@ typedef __mpq_struct *mpq_ptr;
+
+ /* Microsoft's C compiler accepts __inline */
+ #ifdef _MSC_VER
+-#define __GMP_EXTERN_INLINE __inline
++#define __GMP_EXTERN_INLINE static __inline
+ #endif
+
+ /* Recent enough Sun C compilers want "inline" */
diff --git a/vcpkg/ports/gmp/portfile.cmake b/vcpkg/ports/gmp/portfile.cmake
new file mode 100644
index 0000000..ee9bc04
--- /dev/null
+++ b/vcpkg/ports/gmp/portfile.cmake
@@ -0,0 +1,133 @@
+if(EXISTS "${CURRENT_INSTALLED_DIR}/include/gmp.h" OR "${CURRENT_INSTALLED_DIR}/include/gmpxx.h")
+ message(FATAL_ERROR "Can't build ${PORT} if mpir is installed. Please remove mpir, and try install ${PORT} again if you need it.")
+endif()
+
+vcpkg_download_distfile(
+ ARCHIVE
+ URLS
+ "https://ftpmirror.gnu.org/gmp/gmp-${VERSION}.tar.xz"
+ "https://ftp.gnu.org/gnu/gmp/gmp-${VERSION}.tar.xz"
+ "https://gmplib.org/download/gmp/gmp-${VERSION}.tar.xz"
+ FILENAME "gmp-${VERSION}.tar.xz"
+ SHA512 e85a0dab5195889948a3462189f0e0598d331d3457612e2d3350799dba2e244316d256f8161df5219538eb003e4b5343f989aaa00f96321559063ed8c8f29fd2
+)
+
+vcpkg_extract_source_archive(SOURCE_PATH
+ ARCHIVE "${ARCHIVE}"
+ SOURCE_BASE "v${VERSION}"
+ PATCHES
+ asmflags.patch
+ cross-tools.patch
+ subdirs.patch
+ msvc_symbol.patch
+ arm64-coff.patch
+ remove_compiler_info.patch
+ c23.patch
+)
+
+vcpkg_list(SET OPTIONS)
+if("fat" IN_LIST FEATURES)
+ vcpkg_list(APPEND OPTIONS "--enable-fat")
+endif()
+
+if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
+ vcpkg_list(APPEND OPTIONS
+ "ac_cv_func_memset=yes"
+ "gmp_cv_asm_w32=.word"
+ "gmp_cv_check_libm_for_build=no"
+ )
+endif()
+
+set(disable_assembly OFF)
+set(ccas "")
+set(asmflags "-c")
+vcpkg_cmake_get_vars(cmake_vars_file)
+include("${cmake_vars_file}")
+if(VCPKG_DETECTED_CMAKE_C_COMPILER_ID STREQUAL "MSVC")
+ if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
+ string(APPEND asmflags " --target=i686-pc-windows-msvc")
+ elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ string(APPEND asmflags " --target=x86_64-pc-windows-msvc")
+ elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
+ string(APPEND asmflags " --target=arm64-pc-windows-msvc")
+ else()
+ set(disable_assembly ON)
+ endif()
+ if(NOT disable_assembly)
+ vcpkg_find_acquire_program(CLANG)
+ set(ccas "${CLANG}")
+ endif()
+elseif(VCPKG_TARGET_IS_MINGW AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
+ # not exporting asm functions
+ set(disable_assembly ON)
+elseif(VCPKG_TARGET_IS_LINUX AND VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
+ set(ccas "${VCPKG_DETECTED_CMAKE_C_COMPILER}")
+ vcpkg_list(APPEND OPTIONS "ABI=32")
+ string(APPEND asmflags " -m32")
+else()
+ set(ccas "${VCPKG_DETECTED_CMAKE_C_COMPILER}")
+endif()
+
+if(disable_assembly)
+ vcpkg_list(APPEND OPTIONS "--enable-assembly=no")
+elseif(ccas)
+ cmake_path(GET ccas PARENT_PATH ccas_dir)
+ vcpkg_add_to_path("${ccas_dir}")
+ cmake_path(GET ccas FILENAME ccas_command)
+endif()
+vcpkg_list(APPEND OPTIONS "CCAS=${ccas_command}" "ASMFLAGS=${asmflags}")
+
+if(VCPKG_CROSSCOMPILING)
+ set(ENV{HOST_TOOLS_PREFIX} "${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}")
+endif()
+
+if(VCPKG_HOST_IS_WINDOWS)
+ # dumpbin detection fails with autoconf 2.72
+ set(ENV{WANT_AUTOCONF} 2.71)
+endif()
+vcpkg_configure_make(
+ SOURCE_PATH "${SOURCE_PATH}"
+ AUTOCONFIG
+ ADDITIONAL_MSYS_PACKAGES
+ DIRECT_PACKAGES
+ "https://mirror.msys2.org/msys/x86_64/autoconf2.71-2.71-3-any.pkg.tar.zst"
+ dd312c428b2e19afd00899eb53ea4255794dea4c19d1d6dea2419cb6a54209ea2130d48abbc20af12196b9f628143436f736fbf889809c2c2291be0c69c0e306
+ OPTIONS
+ ${OPTIONS}
+ --enable-cxx
+ --with-pic
+ --with-readline=no
+ "gmp_cv_prog_exeext_for_build=${VCPKG_HOST_EXECUTABLE_SUFFIX}"
+)
+vcpkg_install_make()
+vcpkg_fixup_pkgconfig()
+
+if(NOT VCPKG_CROSSCOMPILING)
+ file(INSTALL
+ "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/gen-bases${VCPKG_HOST_EXECUTABLE_SUFFIX}"
+ "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/gen-fac${VCPKG_HOST_EXECUTABLE_SUFFIX}"
+ "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/gen-fib${VCPKG_HOST_EXECUTABLE_SUFFIX}"
+ "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/gen-jacobitab${VCPKG_HOST_EXECUTABLE_SUFFIX}"
+ "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/gen-psqr${VCPKG_HOST_EXECUTABLE_SUFFIX}"
+ "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/gen-sieve${VCPKG_HOST_EXECUTABLE_SUFFIX}"
+ "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/gen-trialdivtab${VCPKG_HOST_EXECUTABLE_SUFFIX}"
+ DESTINATION "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}"
+ USE_SOURCE_PERMISSIONS
+ )
+ vcpkg_copy_tool_dependencies("${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}")
+endif()
+
+file(REMOVE_RECURSE
+ "${CURRENT_PACKAGES_DIR}/debug/share"
+ "${CURRENT_PACKAGES_DIR}/debug/include"
+)
+
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+
+vcpkg_install_copyright(
+ FILE_LIST
+ "${SOURCE_PATH}/README"
+ "${SOURCE_PATH}/COPYING.LESSERv3"
+ "${SOURCE_PATH}/COPYINGv3"
+ "${SOURCE_PATH}/COPYINGv2"
+)
diff --git a/vcpkg/ports/gmp/remove_compiler_info.patch b/vcpkg/ports/gmp/remove_compiler_info.patch
new file mode 100644
index 0000000..77871aa
--- /dev/null
+++ b/vcpkg/ports/gmp/remove_compiler_info.patch
@@ -0,0 +1,15 @@
+diff --git a/gmp-h.in b/gmp-h.in
+index 648c933582..fa37296fe4 100644
+--- a/gmp-h.in
++++ b/gmp-h.in
+@@ -2330,10 +2330,6 @@ enum
+ GMP_ERROR_MPZ_OVERFLOW = 16
+ };
+
+-/* Define CC and CFLAGS which were used to build this version of GMP */
+-#define __GMP_CC "@CC@"
+-#define __GMP_CFLAGS "@CFLAGS@"
+-
+ /* Major version number is the value of __GNU_MP__ too, above. */
+ #define __GNU_MP_VERSION 6
+ #define __GNU_MP_VERSION_MINOR 3
diff --git a/vcpkg/ports/gmp/subdirs.patch b/vcpkg/ports/gmp/subdirs.patch
new file mode 100644
index 0000000..4c5033f
--- /dev/null
+++ b/vcpkg/ports/gmp/subdirs.patch
@@ -0,0 +1,13 @@
+diff --git a/Makefile.am b/Makefile.am
+index 9f92a4f..e35629d 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -117,7 +117,7 @@ LIBGMPXX_LT_REVISION = 0
+ LIBGMPXX_LT_AGE = 7
+
+
+-SUBDIRS = tests mpn mpz mpq mpf printf scanf rand cxx demos tune doc
++SUBDIRS = mpn mpz mpq mpf printf rand cxx
+
+ EXTRA_DIST = configfsf.guess configfsf.sub .gdbinit INSTALL.autoconf \
+ COPYING.LESSERv3 COPYINGv2 COPYINGv3
diff --git a/vcpkg/ports/gmp/usage b/vcpkg/ports/gmp/usage
new file mode 100644
index 0000000..c8ff10a
--- /dev/null
+++ b/vcpkg/ports/gmp/usage
@@ -0,0 +1,11 @@
+The package gmp can be imported via CMake FindPkgConfig module:
+
+ # gmp
+ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(gmp REQUIRED IMPORTED_TARGET gmp)
+ target_link_libraries(main PkgConfig::gmp)
+
+ # gmpxx
+ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(gmpxx REQUIRED IMPORTED_TARGET gmpxx)
+ target_link_libraries(main PkgConfig::gmpxx)
diff --git a/vcpkg/ports/gmp/vcpkg.json b/vcpkg/ports/gmp/vcpkg.json
new file mode 100644
index 0000000..65f0e4c
--- /dev/null
+++ b/vcpkg/ports/gmp/vcpkg.json
@@ -0,0 +1,25 @@
+{
+ "name": "gmp",
+ "version": "6.3.0",
+ "port-version": 3,
+ "description": "The GNU Multiple Precision Arithmetic Library",
+ "homepage": "https://gmplib.org",
+ "license": "LGPL-3.0-only OR GPL-2.0-only",
+ "supports": "!xbox",
+ "dependencies": [
+ {
+ "name": "gmp",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-get-vars",
+ "host": true
+ }
+ ],
+ "features": {
+ "fat": {
+ "description": "Enable runtime selection of optimized low level routines",
+ "supports": "!windows | mingw"
+ }
+ }
+}