From: Viktor Szakats Date: Tue, 8 Aug 2023 11:00:36 +0000 (+0000) Subject: mingw: delete support for legacy mingw.org toolchain X-Git-Tag: curl-8_4_0~149 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=38029101e2d78ba125732b3bab6ec267b80a0e72;p=thirdparty%2Fcurl.git mingw: delete support for legacy mingw.org toolchain Drop support for "old" / "legacy" / "classic" / "v1" / "mingw32" MinGW: https://en.wikipedia.org/wiki/MinGW, https://osdn.net/projects/mingw/ Its homepage used to be http://mingw.org/ [no HTTPS], and broken now. It supported the x86 CPU only and used a old Windows API header and implib set, often causing issues. It also misses most modern Windows features, offering old versions of both binutils and gcc (no llvm/clang support). It was last updated 2 years ago. curl now relies on toolchains based on the mingw-w64 project: https://www.mingw-w64.org/ https://sourceforge.net/projects/mingw-w64/ https://www.msys2.org/ https://github.com/msys2/msys2 https://github.com/mstorsjo/llvm-mingw (Also available via Linux and macOS package managers.) Closes #11625 --- diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index 9b0228bbc2..161b2dd6c9 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -237,12 +237,6 @@ stages: prepare: pacman -S --needed --noconfirm --noprogressbar libssh-devel mingw-w64-x86_64-libssh configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --with-libssh --with-openssl tests: "~571 ~614" - v1_mingw: - name: 32-bit (legacy) - container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys1-mingw:ltsc2019 - container_cmd: C:\MinGW\msys\1.0\bin\sh - configure: --host=i686-pc-mingw32 --build=i686-pc-mingw32 --prefix=/mingw --enable-debug --without-ssl --with-mingw1-deprecated - tests: "!203 !1143" v1_mingw32: name: 32-bit w/o zlib container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys1-mingw32:ltsc2019 @@ -269,12 +263,6 @@ stages: prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-x86_64-libssh2 configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --with-libssh2 tests: "~571" - v1_mingw_schannel: - name: 32-bit Schannel/SSPI/WinIDN (legacy) - container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys1-mingw:ltsc2019 - container_cmd: C:\MinGW\msys\1.0\bin\sh - configure: --host=i686-pc-mingw32 --build=i686-pc-mingw32 --prefix=/mingw --enable-debug --enable-sspi --with-schannel --with-winidn --with-mingw1-deprecated - tests: "!203 !305 !311 !312 !313 !404 !1143 !2033 !2035 !2038 !2041 !2042 !2048 !2070 !2079 !2087 !3023 !3024" v1_mingw32_schannel: name: 32-bit Schannel/SSPI/WinIDN w/o zlib container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys1-mingw32:ltsc2019 diff --git a/CMakeLists.txt b/CMakeLists.txt index 45838483c5..0b3aed9062 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -385,19 +385,6 @@ if(WIN32) if(USE_LIBRTMP) list(APPEND CURL_LIBS "winmm") endif() - - # Matching logic used for Curl_win32_random() - if(MINGW) - check_c_source_compiles(" - #include <_mingw.h> - #if defined(__MINGW64_VERSION_MAJOR) - #error - #endif - int main(void) { - return 0; - }" - HAVE_MINGW_ORIGINAL) - endif() endif() # check SSL libraries @@ -488,9 +475,7 @@ if(CURL_USE_OPENSSL) if(WIN32) list(APPEND CURL_LIBS "ws2_32") - if(NOT HAVE_MINGW_ORIGINAL) - list(APPEND CURL_LIBS "bcrypt") # for OpenSSL/LibreSSL - endif() + list(APPEND CURL_LIBS "bcrypt") # for OpenSSL/LibreSSL endif() set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR}) @@ -595,9 +580,7 @@ macro(openssl_check_symbol_exists SYMBOL FILES VARIABLE) endif() if(WIN32) list(APPEND CMAKE_REQUIRED_LIBRARIES "ws2_32") - if(NOT HAVE_MINGW_ORIGINAL) - list(APPEND CMAKE_REQUIRED_LIBRARIES "bcrypt") # for OpenSSL/LibreSSL - endif() + list(APPEND CMAKE_REQUIRED_LIBRARIES "bcrypt") # for OpenSSL/LibreSSL endif() elseif(USE_WOLFSSL) set(CMAKE_REQUIRED_INCLUDES "${WolfSSL_INCLUDE_DIRS}") @@ -1360,11 +1343,7 @@ if(WIN32) list(APPEND CURL_LIBS "advapi32" "crypt32") endif() - if(NOT HAVE_MINGW_ORIGINAL) - list(APPEND CURL_LIBS "bcrypt") - else() - set(HAVE_FTRUNCATE OFF) - endif() + list(APPEND CURL_LIBS "bcrypt") endif() if(MSVC) diff --git a/appveyor.yml b/appveyor.yml index 2a52c585a6..94de1d175f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -188,21 +188,6 @@ environment: ADD_PATH: "C:\\mingw-w64\\i686-6.3.0-posix-dwarf-rt_v5-rev1\\mingw32\\bin;C:\\msys64\\usr\\bin" MSYS2_ARG_CONV_EXCL: "/*" BUILD_OPT: -k - - job_name: "CMake, mingw, Debug x86, no SSL, Static" - APPVEYOR_BUILD_WORKER_IMAGE: "Visual Studio 2022" - BUILD_SYSTEM: CMake - PRJ_GEN: "MSYS Makefiles" - PRJ_CFG: Debug - OPENSSL: OFF - SCHANNEL: OFF - ENABLE_UNICODE: OFF - HTTP_ONLY: OFF - TESTING: ON - SHARED: OFF - DISABLED_TESTS: "!1139 !1501" - ADD_PATH: "C:\\MinGW\\bin;C:\\msys64\\usr\\bin" - MSYS2_ARG_CONV_EXCL: "/*" - BUILD_OPT: -k # winbuild-based builds - job_name: "winbuild, VS2015, Debug" APPVEYOR_BUILD_WORKER_IMAGE: "Visual Studio 2015" diff --git a/configure.ac b/configure.ac index a2c8e2ee3a..2fc9f2f017 100644 --- a/configure.ac +++ b/configure.ac @@ -579,67 +579,6 @@ else fi AM_CONDITIONAL(BUILD_UNITTESTS, test x$want_unittests = xyes) -# For original MinGW (ie not MinGW-w64) define the Windows minimum supported OS -# version to Windows XP (0x501) if it hasn't already been defined by the user. -# Without this override original MinGW defaults the version to Windows NT 4.0. -# Note original MinGW sets _WIN32_WINNT if not defined to whatever WINVER is. -case $host in - *-*-mingw32*) - AC_MSG_CHECKING([if MinGW minimum supported OS should be set to XP]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#include <_mingw.h> - ]],[[ -#if defined(__MINGW64_VERSION_MAJOR) || \ - defined(WINVER) || \ - defined(_WIN32_WINNT) -#error -#endif - ]]) - ],[ - CPPFLAGS="$CPPFLAGS -DWINVER=0x501" - AC_MSG_RESULT([yes]) - ],[ - AC_MSG_RESULT([no]) - ]) - ;; -esac - -# Detect original MinGW (not MinGW-w64) -curl_mingw_original=no -case $host in - *-*-mingw32*) - AC_MSG_CHECKING([using original MinGW (not MinGW-w64)]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#include <_mingw.h> - ]],[[ -#if defined(__MINGW64_VERSION_MAJOR) -#error -#endif - ]]) - ],[ - curl_mingw_original=yes - curl_mingw_die=yes - AC_MSG_RESULT([yes]) - ],[ - AC_MSG_RESULT([no]) - ]) - ;; -esac - - -AC_ARG_WITH(mingw1-deprecated,dnl -AS_HELP_STRING([--with-mingw1-deprecated],[confirm you realize support for mingw v1 is dying]), - if test X"$withval" != Xno; then - curl_mingw_die= - fi -) - -if test -n "$curl_mingw_die"; then - AC_MSG_ERROR([support for mingw v1 is going away, enable temporarily with --with-mingw1-deprecated]) -fi - dnl ********************************************************************** dnl Compilation based checks should not be done before this point. dnl ********************************************************************** @@ -2080,8 +2019,7 @@ if test "x$USE_WIN32_CRYPTO" = "x1" -o "x$USE_SCHANNEL" = "x1"; then fi dnl link bcrypt for BCryptGenRandom() (used when building for Vista or newer) -if test "x$curl_cv_native_windows" = "xyes" && - test "x$curl_mingw_original" = "xno"; then +if test "x$curl_cv_native_windows" = "xyes"; then LIBS="-lbcrypt $LIBS" fi diff --git a/docs/DEPRECATE.md b/docs/DEPRECATE.md index 5ea36eb57f..c932fadbcd 100644 --- a/docs/DEPRECATE.md +++ b/docs/DEPRECATE.md @@ -6,18 +6,6 @@ email the as soon as possible and explain to us why this is a problem for you and how your use case cannot be satisfied properly using a workaround. -## mingw v1 - -We remove support for building curl with the original legacy mingw version 1 -in September 2023. - -During the deprecation period you can enable the support with the configure -option `--with-mingw1-deprecated`. - -mingw version 1 is old and deprecated software. There are much better and -still support build environments to use to build curl and other software. For -example [MinGW-w64](https://www.mingw-w64.org/). - ## space-separated `NOPROXY` patterns When specifying patterns/domain names for curl that should *not* go through a @@ -46,3 +34,4 @@ curl will remove the support for space-separated names in July 2024. - Support for systems without 64 bit data types - NSS - gskit + - mingw v1 diff --git a/docs/INSTALL.md b/docs/INSTALL.md index 28ad553048..7e3a2698d1 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -183,12 +183,12 @@ multi-threaded dynamic C runtime. If you get linkage errors read section 5.7 of the FAQ document. -## MinGW32 +## mingw-w64 -Make sure that MinGW32's bin directory is in the search path, for example: +Make sure that mingw-w64's bin directory is in the search path, for example: ```cmd -set PATH=c:\mingw32\bin;%PATH% +set PATH=c:\mingw-w64\bin;%PATH% ``` then run `mingw32-make mingw32` in the root dir. There are other @@ -246,7 +246,7 @@ Requires DJGPP in the search path and pointing to the Watt-32 stack via Run `make -f Makefile.dist djgpp` in the root curl dir. -For build configuration options, please see the MinGW32 section. +For build configuration options, please see the mingw-w64 section. Notes: @@ -261,7 +261,7 @@ Notes: Run `make -f Makefile.dist amiga` in the root curl dir. -For build configuration options, please see the MinGW32 section. +For build configuration options, please see the mingw-w64 section. ## Disabling Specific Protocols in Windows builds diff --git a/lib/config-win32.h b/lib/config-win32.h index fd2503668f..e358741a17 100644 --- a/lib/config-win32.h +++ b/lib/config-win32.h @@ -39,15 +39,13 @@ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the header file. */ -#if defined(__MINGW32__) || \ - (defined(_MSC_VER) && (_MSC_VER >= 1800)) +#if (defined(_MSC_VER) && (_MSC_VER >= 1800)) || defined(__MINGW32__) #define HAVE_INTTYPES_H 1 #endif /* Define to 1 if you have the header file. */ -#if defined(__MINGW32__) || defined(__POCC__) || \ - (defined(_MSC_VER) && (_MSC_VER >= 1600)) || \ - (defined(__BORLANDC__) && (__BORLANDC__ >= 0x0582)) +#if (defined(_MSC_VER) && (_MSC_VER >= 1600)) || defined(__MINGW32__) || \ + (defined(__BORLANDC__) && (__BORLANDC__ >= 0x0582)) || defined(__POCC__) #define HAVE_STDINT_H 1 #endif @@ -72,8 +70,7 @@ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ -#if (defined(_MSC_VER) && (_MSC_VER >= 1800)) || \ - defined(__MINGW64_VERSION_MAJOR) +#if (defined(_MSC_VER) && (_MSC_VER >= 1800)) || defined(__MINGW32__) #define HAVE_STDBOOL_H 1 #endif @@ -140,7 +137,7 @@ #define HAVE_STRING_H 1 /* Define to 1 if you have the header file. */ -#if defined(__MINGW64_VERSION_MAJOR) +#if defined(__MINGW32__) #define HAVE_LIBGEN_H 1 #endif @@ -155,8 +152,7 @@ /* #define TIME_WITH_SYS_TIME 1 */ /* Define to 1 if bool is an available type. */ -#if (defined(_MSC_VER) && (_MSC_VER >= 1800)) || \ - defined(__MINGW64_VERSION_MAJOR) +#if (defined(_MSC_VER) && (_MSC_VER >= 1800)) || defined(__MINGW32__) #define HAVE_BOOL_T 1 #endif @@ -168,7 +164,7 @@ #define HAVE_CLOSESOCKET 1 /* Define if you have the ftruncate function. */ -#if defined(__MINGW64_VERSION_MAJOR) +#if defined(__MINGW32__) #define HAVE_FTRUNCATE 1 #endif @@ -203,7 +199,7 @@ #define HAVE_SOCKET 1 /* Define if you have the strcasecmp function. */ -#ifdef __MINGW32__ +#if defined(__MINGW32__) #define HAVE_STRCASECMP 1 #endif @@ -276,12 +272,12 @@ #endif /* Define to 1 if you have the `basename' function. */ -#if defined(__MINGW64_VERSION_MAJOR) +#if defined(__MINGW32__) #define HAVE_BASENAME 1 #endif /* Define to 1 if you have the strtok_r function. */ -#if defined(__MINGW64_VERSION_MAJOR) +#if defined(__MINGW32__) #define HAVE_STRTOK_R 1 #endif @@ -411,11 +407,9 @@ #define _CRT_NONSTDC_NO_DEPRECATE 1 #endif -/* mingw-w64, mingw using >= MSVCR80, and visual studio >= 2005 (MSVCR80) +/* mingw-w64 and visual studio >= 2005 (MSVCR80) all default to 64-bit time_t unless _USE_32BIT_TIME_T is defined */ -#if defined(__MINGW64_VERSION_MAJOR) || \ - (defined(__MINGW32__) && (__MSVCRT_VERSION__ >= 0x0800)) || \ - (defined(_MSC_VER) && (_MSC_VER >= 1400)) +#if (defined(_MSC_VER) && (_MSC_VER >= 1400)) || defined(__MINGW32__) # ifndef _USE_32BIT_TIME_T # define SIZEOF_TIME_T 8 # else @@ -564,14 +558,14 @@ Vista #endif /* Number of bits in a file offset, on hosts where this is settable. */ -#if defined(USE_WIN32_LARGE_FILES) && defined(__MINGW64_VERSION_MAJOR) +#if defined(USE_WIN32_LARGE_FILES) && defined(__MINGW32__) # ifndef _FILE_OFFSET_BITS # define _FILE_OFFSET_BITS 64 # endif #endif /* Define to the size of `off_t', as computed by sizeof. */ -#if defined(__MINGW64_VERSION_MAJOR) && \ +#if defined(__MINGW32__) && \ defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64) # define SIZEOF_OFF_T 8 #else diff --git a/lib/curl_setup.h b/lib/curl_setup.h index b43714da74..ba14972e23 100644 --- a/lib/curl_setup.h +++ b/lib/curl_setup.h @@ -28,11 +28,6 @@ #define CURL_NO_OLDIES #endif -/* define mingw version macros, eg __MINGW{32,64}_{MINOR,MAJOR}_VERSION */ -#ifdef __MINGW32__ -#include <_mingw.h> -#endif - /* * Disable Visual Studio warnings: * 4127 "conditional expression is constant" @@ -830,9 +825,6 @@ int getpwuid_r(uid_t uid, struct passwd *pwd, char *buf, #endif #if defined(USE_UNIX_SOCKETS) && defined(WIN32) -# if defined(__MINGW32__) && !defined(LUP_SECURE) - typedef u_short ADDRESS_FAMILY; /* Classic mingw, 11y+ old mingw-w64 */ -# endif # if !defined(UNIX_PATH_MAX) /* Replicating logic present in afunix.h (distributed with newer Windows 10 SDK versions only) */ diff --git a/lib/curl_sspi.h b/lib/curl_sspi.h index 9816d59c84..5af7c2483a 100644 --- a/lib/curl_sspi.h +++ b/lib/curl_sspi.h @@ -70,227 +70,6 @@ extern PSecurityFunctionTable s_pSecFn; #define ISC_REQ_USE_HTTP_STYLE 0x01000000 #endif -#ifndef ISC_RET_REPLAY_DETECT -#define ISC_RET_REPLAY_DETECT 0x00000004 -#endif - -#ifndef ISC_RET_SEQUENCE_DETECT -#define ISC_RET_SEQUENCE_DETECT 0x00000008 -#endif - -#ifndef ISC_RET_CONFIDENTIALITY -#define ISC_RET_CONFIDENTIALITY 0x00000010 -#endif - -#ifndef ISC_RET_ALLOCATED_MEMORY -#define ISC_RET_ALLOCATED_MEMORY 0x00000100 -#endif - -#ifndef ISC_RET_STREAM -#define ISC_RET_STREAM 0x00008000 -#endif - -#ifndef SEC_E_INSUFFICIENT_MEMORY -# define SEC_E_INSUFFICIENT_MEMORY ((HRESULT)0x80090300L) -#endif -#ifndef SEC_E_INVALID_HANDLE -# define SEC_E_INVALID_HANDLE ((HRESULT)0x80090301L) -#endif -#ifndef SEC_E_UNSUPPORTED_FUNCTION -# define SEC_E_UNSUPPORTED_FUNCTION ((HRESULT)0x80090302L) -#endif -#ifndef SEC_E_TARGET_UNKNOWN -# define SEC_E_TARGET_UNKNOWN ((HRESULT)0x80090303L) -#endif -#ifndef SEC_E_INTERNAL_ERROR -# define SEC_E_INTERNAL_ERROR ((HRESULT)0x80090304L) -#endif -#ifndef SEC_E_SECPKG_NOT_FOUND -# define SEC_E_SECPKG_NOT_FOUND ((HRESULT)0x80090305L) -#endif -#ifndef SEC_E_NOT_OWNER -# define SEC_E_NOT_OWNER ((HRESULT)0x80090306L) -#endif -#ifndef SEC_E_CANNOT_INSTALL -# define SEC_E_CANNOT_INSTALL ((HRESULT)0x80090307L) -#endif -#ifndef SEC_E_INVALID_TOKEN -# define SEC_E_INVALID_TOKEN ((HRESULT)0x80090308L) -#endif -#ifndef SEC_E_CANNOT_PACK -# define SEC_E_CANNOT_PACK ((HRESULT)0x80090309L) -#endif -#ifndef SEC_E_QOP_NOT_SUPPORTED -# define SEC_E_QOP_NOT_SUPPORTED ((HRESULT)0x8009030AL) -#endif -#ifndef SEC_E_NO_IMPERSONATION -# define SEC_E_NO_IMPERSONATION ((HRESULT)0x8009030BL) -#endif -#ifndef SEC_E_LOGON_DENIED -# define SEC_E_LOGON_DENIED ((HRESULT)0x8009030CL) -#endif -#ifndef SEC_E_UNKNOWN_CREDENTIALS -# define SEC_E_UNKNOWN_CREDENTIALS ((HRESULT)0x8009030DL) -#endif -#ifndef SEC_E_NO_CREDENTIALS -# define SEC_E_NO_CREDENTIALS ((HRESULT)0x8009030EL) -#endif -#ifndef SEC_E_MESSAGE_ALTERED -# define SEC_E_MESSAGE_ALTERED ((HRESULT)0x8009030FL) -#endif -#ifndef SEC_E_OUT_OF_SEQUENCE -# define SEC_E_OUT_OF_SEQUENCE ((HRESULT)0x80090310L) -#endif -#ifndef SEC_E_NO_AUTHENTICATING_AUTHORITY -# define SEC_E_NO_AUTHENTICATING_AUTHORITY ((HRESULT)0x80090311L) -#endif -#ifndef SEC_E_BAD_PKGID -# define SEC_E_BAD_PKGID ((HRESULT)0x80090316L) -#endif -#ifndef SEC_E_CONTEXT_EXPIRED -# define SEC_E_CONTEXT_EXPIRED ((HRESULT)0x80090317L) -#endif -#ifndef SEC_E_INCOMPLETE_MESSAGE -# define SEC_E_INCOMPLETE_MESSAGE ((HRESULT)0x80090318L) -#endif -#ifndef SEC_E_INCOMPLETE_CREDENTIALS -# define SEC_E_INCOMPLETE_CREDENTIALS ((HRESULT)0x80090320L) -#endif -#ifndef SEC_E_BUFFER_TOO_SMALL -# define SEC_E_BUFFER_TOO_SMALL ((HRESULT)0x80090321L) -#endif -#ifndef SEC_E_WRONG_PRINCIPAL -# define SEC_E_WRONG_PRINCIPAL ((HRESULT)0x80090322L) -#endif -#ifndef SEC_E_TIME_SKEW -# define SEC_E_TIME_SKEW ((HRESULT)0x80090324L) -#endif -#ifndef SEC_E_UNTRUSTED_ROOT -# define SEC_E_UNTRUSTED_ROOT ((HRESULT)0x80090325L) -#endif -#ifndef SEC_E_ILLEGAL_MESSAGE -# define SEC_E_ILLEGAL_MESSAGE ((HRESULT)0x80090326L) -#endif -#ifndef SEC_E_CERT_UNKNOWN -# define SEC_E_CERT_UNKNOWN ((HRESULT)0x80090327L) -#endif -#ifndef SEC_E_CERT_EXPIRED -# define SEC_E_CERT_EXPIRED ((HRESULT)0x80090328L) -#endif -#ifndef SEC_E_ENCRYPT_FAILURE -# define SEC_E_ENCRYPT_FAILURE ((HRESULT)0x80090329L) -#endif -#ifndef SEC_E_DECRYPT_FAILURE -# define SEC_E_DECRYPT_FAILURE ((HRESULT)0x80090330L) -#endif -#ifndef SEC_E_ALGORITHM_MISMATCH -# define SEC_E_ALGORITHM_MISMATCH ((HRESULT)0x80090331L) -#endif -#ifndef SEC_E_SECURITY_QOS_FAILED -# define SEC_E_SECURITY_QOS_FAILED ((HRESULT)0x80090332L) -#endif -#ifndef SEC_E_UNFINISHED_CONTEXT_DELETED -# define SEC_E_UNFINISHED_CONTEXT_DELETED ((HRESULT)0x80090333L) -#endif -#ifndef SEC_E_NO_TGT_REPLY -# define SEC_E_NO_TGT_REPLY ((HRESULT)0x80090334L) -#endif -#ifndef SEC_E_NO_IP_ADDRESSES -# define SEC_E_NO_IP_ADDRESSES ((HRESULT)0x80090335L) -#endif -#ifndef SEC_E_WRONG_CREDENTIAL_HANDLE -# define SEC_E_WRONG_CREDENTIAL_HANDLE ((HRESULT)0x80090336L) -#endif -#ifndef SEC_E_CRYPTO_SYSTEM_INVALID -# define SEC_E_CRYPTO_SYSTEM_INVALID ((HRESULT)0x80090337L) -#endif -#ifndef SEC_E_MAX_REFERRALS_EXCEEDED -# define SEC_E_MAX_REFERRALS_EXCEEDED ((HRESULT)0x80090338L) -#endif -#ifndef SEC_E_MUST_BE_KDC -# define SEC_E_MUST_BE_KDC ((HRESULT)0x80090339L) -#endif -#ifndef SEC_E_STRONG_CRYPTO_NOT_SUPPORTED -# define SEC_E_STRONG_CRYPTO_NOT_SUPPORTED ((HRESULT)0x8009033AL) -#endif -#ifndef SEC_E_TOO_MANY_PRINCIPALS -# define SEC_E_TOO_MANY_PRINCIPALS ((HRESULT)0x8009033BL) -#endif -#ifndef SEC_E_NO_PA_DATA -# define SEC_E_NO_PA_DATA ((HRESULT)0x8009033CL) -#endif -#ifndef SEC_E_PKINIT_NAME_MISMATCH -# define SEC_E_PKINIT_NAME_MISMATCH ((HRESULT)0x8009033DL) -#endif -#ifndef SEC_E_SMARTCARD_LOGON_REQUIRED -# define SEC_E_SMARTCARD_LOGON_REQUIRED ((HRESULT)0x8009033EL) -#endif -#ifndef SEC_E_SHUTDOWN_IN_PROGRESS -# define SEC_E_SHUTDOWN_IN_PROGRESS ((HRESULT)0x8009033FL) -#endif -#ifndef SEC_E_KDC_INVALID_REQUEST -# define SEC_E_KDC_INVALID_REQUEST ((HRESULT)0x80090340L) -#endif -#ifndef SEC_E_KDC_UNABLE_TO_REFER -# define SEC_E_KDC_UNABLE_TO_REFER ((HRESULT)0x80090341L) -#endif -#ifndef SEC_E_KDC_UNKNOWN_ETYPE -# define SEC_E_KDC_UNKNOWN_ETYPE ((HRESULT)0x80090342L) -#endif -#ifndef SEC_E_UNSUPPORTED_PREAUTH -# define SEC_E_UNSUPPORTED_PREAUTH ((HRESULT)0x80090343L) -#endif -#ifndef SEC_E_DELEGATION_REQUIRED -# define SEC_E_DELEGATION_REQUIRED ((HRESULT)0x80090345L) -#endif -#ifndef SEC_E_BAD_BINDINGS -# define SEC_E_BAD_BINDINGS ((HRESULT)0x80090346L) -#endif -#ifndef SEC_E_MULTIPLE_ACCOUNTS -# define SEC_E_MULTIPLE_ACCOUNTS ((HRESULT)0x80090347L) -#endif -#ifndef SEC_E_NO_KERB_KEY -# define SEC_E_NO_KERB_KEY ((HRESULT)0x80090348L) -#endif -#ifndef SEC_E_CERT_WRONG_USAGE -# define SEC_E_CERT_WRONG_USAGE ((HRESULT)0x80090349L) -#endif -#ifndef SEC_E_DOWNGRADE_DETECTED -# define SEC_E_DOWNGRADE_DETECTED ((HRESULT)0x80090350L) -#endif -#ifndef SEC_E_SMARTCARD_CERT_REVOKED -# define SEC_E_SMARTCARD_CERT_REVOKED ((HRESULT)0x80090351L) -#endif -#ifndef SEC_E_ISSUING_CA_UNTRUSTED -# define SEC_E_ISSUING_CA_UNTRUSTED ((HRESULT)0x80090352L) -#endif -#ifndef SEC_E_REVOCATION_OFFLINE_C -# define SEC_E_REVOCATION_OFFLINE_C ((HRESULT)0x80090353L) -#endif -#ifndef SEC_E_PKINIT_CLIENT_FAILURE -# define SEC_E_PKINIT_CLIENT_FAILURE ((HRESULT)0x80090354L) -#endif -#ifndef SEC_E_SMARTCARD_CERT_EXPIRED -# define SEC_E_SMARTCARD_CERT_EXPIRED ((HRESULT)0x80090355L) -#endif -#ifndef SEC_E_NO_S4U_PROT_SUPPORT -# define SEC_E_NO_S4U_PROT_SUPPORT ((HRESULT)0x80090356L) -#endif -#ifndef SEC_E_CROSSREALM_DELEGATION_FAILURE -# define SEC_E_CROSSREALM_DELEGATION_FAILURE ((HRESULT)0x80090357L) -#endif -#ifndef SEC_E_REVOCATION_OFFLINE_KDC -# define SEC_E_REVOCATION_OFFLINE_KDC ((HRESULT)0x80090358L) -#endif -#ifndef SEC_E_ISSUING_CA_UNTRUSTED_KDC -# define SEC_E_ISSUING_CA_UNTRUSTED_KDC ((HRESULT)0x80090359L) -#endif -#ifndef SEC_E_KDC_CERT_EXPIRED -# define SEC_E_KDC_CERT_EXPIRED ((HRESULT)0x8009035AL) -#endif -#ifndef SEC_E_KDC_CERT_REVOKED -# define SEC_E_KDC_CERT_REVOKED ((HRESULT)0x8009035BL) -#endif #ifndef SEC_E_INVALID_PARAMETER # define SEC_E_INVALID_PARAMETER ((HRESULT)0x8009035DL) #endif @@ -301,30 +80,6 @@ extern PSecurityFunctionTable s_pSecFn; # define SEC_E_POLICY_NLTM_ONLY ((HRESULT)0x8009035FL) #endif -#ifndef SEC_I_CONTINUE_NEEDED -# define SEC_I_CONTINUE_NEEDED ((HRESULT)0x00090312L) -#endif -#ifndef SEC_I_COMPLETE_NEEDED -# define SEC_I_COMPLETE_NEEDED ((HRESULT)0x00090313L) -#endif -#ifndef SEC_I_COMPLETE_AND_CONTINUE -# define SEC_I_COMPLETE_AND_CONTINUE ((HRESULT)0x00090314L) -#endif -#ifndef SEC_I_LOCAL_LOGON -# define SEC_I_LOCAL_LOGON ((HRESULT)0x00090315L) -#endif -#ifndef SEC_I_CONTEXT_EXPIRED -# define SEC_I_CONTEXT_EXPIRED ((HRESULT)0x00090317L) -#endif -#ifndef SEC_I_INCOMPLETE_CREDENTIALS -# define SEC_I_INCOMPLETE_CREDENTIALS ((HRESULT)0x00090320L) -#endif -#ifndef SEC_I_RENEGOTIATE -# define SEC_I_RENEGOTIATE ((HRESULT)0x00090321L) -#endif -#ifndef SEC_I_NO_LSA_CONTEXT -# define SEC_I_NO_LSA_CONTEXT ((HRESULT)0x00090323L) -#endif #ifndef SEC_I_SIGNATURE_NEEDED # define SEC_I_SIGNATURE_NEEDED ((HRESULT)0x0009035CL) #endif diff --git a/lib/curl_threads.c b/lib/curl_threads.c index e13e2947c2..222d9364f0 100644 --- a/lib/curl_threads.c +++ b/lib/curl_threads.c @@ -106,8 +106,6 @@ curl_thread_t Curl_thread_create(unsigned int (CURL_STDCALL *func) (void *), { #ifdef _WIN32_WCE typedef HANDLE curl_win_thread_handle_t; -#elif defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) - typedef unsigned long curl_win_thread_handle_t; #else typedef uintptr_t curl_win_thread_handle_t; #endif diff --git a/lib/curl_threads.h b/lib/curl_threads.h index facbc73705..27a478d4c7 100644 --- a/lib/curl_threads.h +++ b/lib/curl_threads.h @@ -40,8 +40,7 @@ # define curl_thread_t HANDLE # define curl_thread_t_null (HANDLE)0 # if !defined(_WIN32_WINNT) || !defined(_WIN32_WINNT_VISTA) || \ - (_WIN32_WINNT < _WIN32_WINNT_VISTA) || \ - (defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)) + (_WIN32_WINNT < _WIN32_WINNT_VISTA) # define Curl_mutex_init(m) InitializeCriticalSection(m) # else # define Curl_mutex_init(m) InitializeCriticalSectionEx(m, 0, 1) diff --git a/lib/easy_lock.h b/lib/easy_lock.h index 6399a39bde..d3fffd0d2a 100644 --- a/lib/easy_lock.h +++ b/lib/easy_lock.h @@ -31,13 +31,6 @@ #if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x600 #ifdef __MINGW32__ -#ifndef __MINGW64_VERSION_MAJOR -#if (__MINGW32_MAJOR_VERSION < 5) || \ - (__MINGW32_MAJOR_VERSION == 5 && __MINGW32_MINOR_VERSION == 0) -/* mingw >= 5.0.1 defines SRWLOCK, and slightly different from MS define */ -typedef PVOID SRWLOCK, *PSRWLOCK; -#endif -#endif #ifndef SRWLOCK_INIT #define SRWLOCK_INIT NULL #endif diff --git a/lib/rand.c b/lib/rand.c index d7935b397e..3aaf5239ab 100644 --- a/lib/rand.c +++ b/lib/rand.c @@ -51,12 +51,7 @@ uint32_t arc4random(void); #ifdef WIN32 -#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) -# define HAVE_MINGW_ORIGINAL -#endif - -#if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x600 && \ - !defined(HAVE_MINGW_ORIGINAL) +#if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x600 # define HAVE_WIN_BCRYPTGENRANDOM # include # ifdef _MSC_VER diff --git a/lib/vtls/openssl.c b/lib/vtls/openssl.c index a12e712b16..3388e8b976 100644 --- a/lib/vtls/openssl.c +++ b/lib/vtls/openssl.c @@ -1551,11 +1551,9 @@ fail: UI_method_set_closer(ui_method, UI_method_get_closer(UI_OpenSSL())); UI_method_set_reader(ui_method, ssl_ui_reader); UI_method_set_writer(ui_method, ssl_ui_writer); - /* the typecast below was added to please mingw32 */ - priv_key = (EVP_PKEY *) - ENGINE_load_private_key(data->state.engine, key_file, - ui_method, - key_passwd); + priv_key = ENGINE_load_private_key(data->state.engine, key_file, + ui_method, + key_passwd); UI_destroy_method(ui_method); if(!priv_key) { failf(data, "failed to load private key from crypto engine"); diff --git a/lib/vtls/schannel.c b/lib/vtls/schannel.c index f6a5d441a9..7b14b1719f 100644 --- a/lib/vtls/schannel.c +++ b/lib/vtls/schannel.c @@ -68,22 +68,6 @@ # define HAS_ALPN 1 #endif -#ifndef UNISP_NAME_A -#define UNISP_NAME_A "Microsoft Unified Security Protocol Provider" -#endif - -#ifndef UNISP_NAME_W -#define UNISP_NAME_W L"Microsoft Unified Security Protocol Provider" -#endif - -#ifndef UNISP_NAME -#ifdef UNICODE -#define UNISP_NAME UNISP_NAME_W -#else -#define UNISP_NAME UNISP_NAME_A -#endif -#endif - #ifndef BCRYPT_CHACHA20_POLY1305_ALGORITHM #define BCRYPT_CHACHA20_POLY1305_ALGORITHM L"CHACHA20_POLY1305" #endif @@ -108,13 +92,6 @@ #define BCRYPT_SHA384_ALGORITHM L"SHA384" #endif -/* Workaround broken compilers like MinGW. - Return the number of elements in a statically sized array. -*/ -#ifndef ARRAYSIZE -#define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0])) -#endif - #ifdef HAS_CLIENT_CERT_PATH #ifdef UNICODE #define CURL_CERT_STORE_PROV_SYSTEM CERT_STORE_PROV_SYSTEM_W @@ -123,18 +100,6 @@ #endif #endif -#ifndef SP_PROT_SSL2_CLIENT -#define SP_PROT_SSL2_CLIENT 0x00000008 -#endif - -#ifndef SP_PROT_SSL3_CLIENT -#define SP_PROT_SSL3_CLIENT 0x00000008 -#endif - -#ifndef SP_PROT_TLS1_CLIENT -#define SP_PROT_TLS1_CLIENT 0x00000080 -#endif - #ifndef SP_PROT_TLS1_0_CLIENT #define SP_PROT_TLS1_0_CLIENT SP_PROT_TLS1_CLIENT #endif @@ -175,12 +140,6 @@ # define CALG_SHA_256 0x0000800c #endif -/* Work around typo in classic MinGW's w32api up to version 5.0, - see https://osdn.net/projects/mingw/ticket/38391 */ -#if !defined(ALG_CLASS_DHASH) && defined(ALG_CLASS_HASH) -#define ALG_CLASS_DHASH ALG_CLASS_HASH -#endif - #ifndef PKCS12_NO_PERSIST_KEY #define PKCS12_NO_PERSIST_KEY 0x00008000 #endif @@ -2752,8 +2711,7 @@ static void schannel_checksum(const unsigned char *input, if(!CryptCreateHash(hProv, algId, 0, 0, &hHash)) break; /* failed */ - /* workaround for original MinGW, should be (const BYTE*) */ - if(!CryptHashData(hHash, (BYTE*)input, (DWORD)inputlen, 0)) + if(!CryptHashData(hHash, input, (DWORD)inputlen, 0)) break; /* failed */ /* get hash size */ diff --git a/lib/vtls/schannel_int.h b/lib/vtls/schannel_int.h index edb20bcd23..a128e04f6c 100644 --- a/lib/vtls/schannel_int.h +++ b/lib/vtls/schannel_int.h @@ -28,15 +28,9 @@ #ifdef USE_SCHANNEL -#ifdef __MINGW32__ -#ifdef __MINGW64_VERSION_MAJOR +#if defined(__MINGW32__) || defined(CERT_CHAIN_REVOCATION_CHECK_CHAIN) #define HAS_MANUAL_VERIFY_API #endif -#else -#ifdef CERT_CHAIN_REVOCATION_CHECK_CHAIN -#define HAS_MANUAL_VERIFY_API -#endif -#endif #if defined(CryptStringToBinary) && defined(CRYPT_STRING_HEX) \ && !defined(DISABLE_SCHANNEL_CLIENT_CERT) @@ -60,41 +54,6 @@ #endif -#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) -/* Original mingw is missing CERT structs or they're disabled. - Refer to w32api-5.0.2-mingw32-dev\include\wincrypt.h. */ - -/* !checksrc! disable TYPEDEFSTRUCT 4 */ -typedef struct _CERT_OTHER_NAME { - LPSTR pszObjId; - CRYPT_OBJID_BLOB Value; -} CERT_OTHER_NAME, *PCERT_OTHER_NAME; - -typedef struct _CERT_ALT_NAME_ENTRY { - DWORD dwAltNameChoice; - union { - PCERT_OTHER_NAME pOtherName; - LPWSTR pwszRfc822Name; - LPWSTR pwszDNSName; - CERT_NAME_BLOB DirectoryName; - LPWSTR pwszURL; - CRYPT_DATA_BLOB IPAddress; - LPSTR pszRegisteredID; - }; -} CERT_ALT_NAME_ENTRY, *PCERT_ALT_NAME_ENTRY; - -typedef struct _CERT_ALT_NAME_INFO { - DWORD cAltEntry; - PCERT_ALT_NAME_ENTRY rgAltEntry; -} CERT_ALT_NAME_INFO, *PCERT_ALT_NAME_INFO; - -typedef struct _CRYPT_DECODE_PARA { - DWORD cbSize; - PFN_CRYPT_ALLOC pfnAlloc; - PFN_CRYPT_FREE pfnFree; -} CRYPT_DECODE_PARA, *PCRYPT_DECODE_PARA; -#endif - #ifndef SCH_CREDENTIALS_VERSION #define SCH_CREDENTIALS_VERSION 0x00000005 diff --git a/tests/libtest/lib3026.c b/tests/libtest/lib3026.c index 24f7768153..42b44c8903 100644 --- a/tests/libtest/lib3026.c +++ b/tests/libtest/lib3026.c @@ -49,8 +49,6 @@ int test(char *URL) { #ifdef _WIN32_WCE typedef HANDLE curl_win_thread_handle_t; -#elif defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) - typedef unsigned long curl_win_thread_handle_t; #else typedef uintptr_t curl_win_thread_handle_t; #endif diff --git a/tests/server/sockfilt.c b/tests/server/sockfilt.c index d478b4f426..d47f3b2ad0 100644 --- a/tests/server/sockfilt.c +++ b/tests/server/sockfilt.c @@ -556,8 +556,6 @@ static HANDLE select_ws_wait(HANDLE handle, HANDLE signal, HANDLE abort) { #ifdef _WIN32_WCE typedef HANDLE curl_win_thread_handle_t; -#elif defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) - typedef unsigned long curl_win_thread_handle_t; #else typedef uintptr_t curl_win_thread_handle_t; #endif diff --git a/tests/server/util.c b/tests/server/util.c index d18c225aef..435cf61835 100644 --- a/tests/server/util.c +++ b/tests/server/util.c @@ -395,8 +395,7 @@ static struct timeval tvnow(void) ** is typically in the range of 10 milliseconds to 16 milliseconds. */ struct timeval now; -#if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600) && \ - (!defined(__MINGW32__) || defined(__MINGW64_VERSION_MAJOR)) +#if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600) ULONGLONG milliseconds = GetTickCount64(); #else DWORD milliseconds = GetTickCount(); @@ -704,8 +703,6 @@ void install_signal_handlers(bool keep_sigalrm) #ifdef WIN32 #ifdef _WIN32_WCE typedef HANDLE curl_win_thread_handle_t; -#elif defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) - typedef unsigned long curl_win_thread_handle_t; #else typedef uintptr_t curl_win_thread_handle_t; #endif