Skip to content

Commit

Permalink
try dropping windows 32-bit 3
Browse files Browse the repository at this point in the history
  • Loading branch information
vszakats committed Mar 18, 2024
1 parent bdb3c27 commit 63b9e13
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 43 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -606,7 +606,7 @@ jobs:
# https://github.com/actions/upload-artifact
- uses: actions/upload-artifact@v4
with:
name: 'curl-windows-gcc-noarm64'
name: 'curl-windows-gcc-x64'
retention-days: 5
path: |
*-*-mingw*.*
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ SPDX-License-Identifier: CC-BY-SA-4.0
`.tar.xz` or `.zip` packages,<br>PGP signed with:
[`9948 0C09 BC89 B68A 0764 3F30 8C8F 5B14 19BD CAB8`](https://raw.githubusercontent.com/curl/curl-for-win/main/sign-pkg-public.asc)
- Standalone `curl` tool and `libcurl` DLL. Static libraries included.
- Required: Windows Vista with
[Universal CRT](https://support.microsoft.com/topic/update-for-universal-c-runtime-in-windows-322bf30f-4735-bb94-3949-49f5c49f4732)
(x64, ARM64 or x86), macOS 10.9 Mavericks (Intel or ARM),
any Linux (amd64, arm64 or experimental RISC-V) with
[MUSL](https://en.wikipedia.org/wiki/Musl) builds.
- Required: 64-bit Intel or ARM,
Windows Vista with
[Universal CRT](https://support.microsoft.com/topic/update-for-universal-c-runtime-in-windows-322bf30f-4735-bb94-3949-49f5c49f4732),
macOS 10.9 Mavericks,
Linux kernel 3.0 with [MUSL](https://en.wikipedia.org/wiki/Musl) builds.
- [HTTP/3](https://en.wikipedia.org/wiki/HTTP/3),
[HTTP/2](https://en.wikipedia.org/wiki/HTTP/2) support,
and [more](#features).
Expand Down
35 changes: 5 additions & 30 deletions _build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ set -o xtrace -o errexit -o nounset; [ -n "${BASH:-}${ZSH_NAME:-}" ] && set -o p
# r64 build riscv64 target only [EXPERIMENTAL]
# a64 build arm64 target only
# x64 build x86_64 target only
# x86 build i686 target only (for win target)
# nounity build without CMake UNITY mode (slower builds for slightly smaller binaries)
# nocurltool do not build the curl tool (requires cmake)
# curldocs include curl Markdown manual pages in the package
Expand Down Expand Up @@ -125,15 +124,6 @@ set -o xtrace -o errexit -o nounset; [ -n "${BASH:-}${ZSH_NAME:-}" ] && set -o p
# One last escape hatch is making custom wrappers around build tools and
# make libtool use them, then pass any necessary options via those wrappers.
# - enable -fno-omit-frame-pointer on 64-bit archs?
# - win: Drop x86 builds.
# https://data.firefox.com/dashboard/hardware
# A hidden aspect of x86: The Chocolatey package manager installs x86
# binaries on ARM systems to run them in emulated mode. Windows as of ~2021
# got the ability to run x64 in emulated mode, but tooling support is
# missing, just like support for native ARM binaries:
# https://github.com/chocolatey/choco/issues/1803
# https://github.com/chocolatey/choco/issues/2172
# winget and scoop both support native ARM64.

# Resources:
# - https://clang.llvm.org/docs/Toolchain.html
Expand Down Expand Up @@ -565,11 +555,9 @@ build_single_target() {
fi

# GCC-specific machine selection option
[ "${_CPU}" = 'x86' ] && _OPTM='-m32'
[ "${_CPU}" = 'x64' ] && _OPTM='-m64'
[ "${_CPU}" = 'a64' ] && _OPTM='-marm64pe'

[ "${_CPU}" = 'x86' ] && _machine='i686'
[ "${_CPU}" = 'x64' ] && _machine='x86_64'
[ "${_CPU}" = 'a64' ] && _machine='aarch64'
[ "${_CPU}" = 'r64' ] && _machine='riscv64'
Expand All @@ -596,7 +584,6 @@ build_single_target() {
fi

if [ "${_OS}" = 'win' ]; then
[ "${_CPU}" = 'x86' ] && pkgcpu='win32'
[ "${_CPU}" = 'x64' ] && pkgcpu='win64'
[ "${_CPU}" = 'a64' ] && pkgcpu='win64a'
else
Expand All @@ -619,7 +606,6 @@ build_single_target() {
if [ "${_TOOLCHAIN}" = 'llvm-mingw' ]; then
PATH="${CW_LLVM_MINGW_PATH}/bin:${_ori_path}"
else
[ "${_CPU}" = 'x86' ] && _MSYSROOT='/mingw32'
[ "${_CPU}" = 'x64' ] && _MSYSROOT='/mingw64'
[ "${_CPU}" = 'a64' ] && _MSYSROOT='/clangarm64'

Expand Down Expand Up @@ -807,7 +793,6 @@ build_single_target() {
_CMAKE_GLOBAL="-DCMAKE_SYSTEM_NAME=Windows ${_CMAKE_GLOBAL}"
fi

[ "${_CPU}" = 'x86' ] && _RCFLAGS_GLOBAL+=' --target=pe-i386'
[ "${_CPU}" = 'x64' ] && _RCFLAGS_GLOBAL+=' --target=pe-x86-64'
[ "${_CPU}" = 'a64' ] && _RCFLAGS_GLOBAL+=" --target=${_TRIPLET}" # llvm-windres supports triplets here. https://github.com/llvm/llvm-project/blob/main/llvm/tools/llvm-rc/llvm-rc.cpp

Expand Down Expand Up @@ -885,7 +870,6 @@ build_single_target() {
# _CPPFLAGS_GLOBAL+=' -D_FORTIFY_SOURCE=3'

if [ "${_CPU}" = 'x64' ] || \
[ "${_CPU}" = 'x86' ] || \
[ "${_CC}" = 'gcc' ]; then
_CFLAGS_GLOBAL+=' -fstack-clash-protection'
_CXXFLAGS_GLOBAL+=' -fstack-clash-protection'
Expand All @@ -910,8 +894,7 @@ build_single_target() {

# https://fedoraproject.org/wiki/Security_Features_Matrix
# RISC-V: https://gcc.gnu.org/onlinedocs/gcc/RISC-V-Options.html
if [ "${_CPU}" = 'x64' ] || \
[ "${_CPU}" = 'x86' ]; then
if [ "${_CPU}" = 'x64' ]; then
# https://maskray.me/blog/2022-12-18-control-flow-integrity
_CFLAGS_GLOBAL+=' -fcf-protection=full'
_CXXFLAGS_GLOBAL+=' -fcf-protection=full'
Expand Down Expand Up @@ -1162,11 +1145,7 @@ build_single_target() {
if [ "${_OS}" = 'win' ]; then
_LDFLAGS_GLOBAL="${_OPTM} ${_LDFLAGS_GLOBAL}"
# https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2015-September/179242.html
if [ "${_CPU}" = 'x86' ]; then
_LDFLAGS_BIN_GLOBAL+=' -Wl,--pic-executable,-e,_mainCRTStartup'
else
_LDFLAGS_BIN_GLOBAL+=' -Wl,--pic-executable,-e,mainCRTStartup'
fi
_LDFLAGS_BIN_GLOBAL+=' -Wl,--pic-executable,-e,mainCRTStartup'
_CFLAGS_GLOBAL="${_OPTM} ${_CFLAGS_GLOBAL}"
fi

Expand Down Expand Up @@ -1238,8 +1217,7 @@ build_single_target() {
# for boringssl
export _STRIP_BINUTILS=''
if [ "${_OS}" = 'win' ] && [ "${_CC}" = 'llvm' ]; then
if [ "${_CPU}" = 'x64' ] || \
[ "${_CPU}" = 'x86' ]; then
if [ "${_CPU}" = 'x64' ]; then
# Make sure to pick the prefixed binutils strip tool from an unmodified
# PATH. This avoids picking the llvm-mingw copy using the same name.
tmp="${_CCPREFIX}strip"
Expand Down Expand Up @@ -1712,15 +1690,12 @@ EOF

# Build binaries
if [ "${_OS}" = 'win' ]; then
if [[ "${_CONFIG}" = *'x64'* || ! "${_CONFIG}" =~ (a64|x86) ]]; then
if [[ "${_CONFIG}" = *'x64'* || "${_CONFIG}" != *'a64'* ]]; then
build_single_target x64
fi
if [[ "${_CONFIG}" = *'a64'* || ! "${_CONFIG}" =~ (x64|x86) ]]; then
if [[ "${_CONFIG}" = *'a64'* || "${_CONFIG}" != *'x64'* ]]; then
build_single_target a64
fi
if [[ "${_CONFIG}" = *'x86'* || ! "${_CONFIG}" =~ (x64|a64) ]]; then
build_single_target x86
fi
elif [ "${_OS}" = 'mac' ]; then
# TODO: This method is suboptimal. We might want to build pure C
# projects in dual mode and only manual-merge libs that have
Expand Down
4 changes: 2 additions & 2 deletions _ci-win-msys2.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ set -o xtrace -o errexit -o nounset; [ -n "${BASH:-}${ZSH_NAME:-}" ] && set -o p
pacman --noconfirm --ask 20 --noprogressbar --sync --refresh --sysupgrade --sysupgrade
pacman --noconfirm --ask 20 --noprogressbar --sync --refresh --sysupgrade --sysupgrade
pacman --noconfirm --ask 20 --noprogressbar --sync --needed \
mingw-w64-{x86_64,i686}-{clang,cmake,jq,python-pefile,rsync,gettext,osslsigncode} \
mingw-w64-x86_64-{clang,cmake,jq,python-pefile,rsync,gettext,osslsigncode} \
zip

[[ "${CW_CONFIG:-}" = *'boringssl'* ]] && \
pacman --noconfirm --ask 20 --noprogressbar --sync --needed \
mingw-w64-{x86_64,i686}-{go,nasm}
mingw-w64-x86_64-{go,nasm}

./_build.sh
5 changes: 2 additions & 3 deletions boringssl.sh
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ _VER="$1"
LIBS='-lpthread' # for tests
options=''

[ "${_CPU}" = 'x86' ] && cpu='x86'
[ "${_CPU}" = 'x64' ] && cpu='x86_64'
[ "${_CPU}" = 'a64' ] && cpu='ARM64'
[ "${_CPU}" = 'r64' ] && exit 1 # No support as of 2023-10
Expand All @@ -76,7 +75,7 @@ _VER="$1"
options+=' -DOPENSSL_NO_ASM=ON'
else
if [ "${_OS}" = 'win' ] && [ "${_CPU}" != 'a64' ]; then
# nasm is used for Windows x64 and x86
# nasm is used for Windows x64
options+=' -DCMAKE_ASM_NASM_FLAGS=--reproducible'
fi
fi
Expand Down Expand Up @@ -128,7 +127,7 @@ _VER="$1"
# - fails to clear timestamps in NASM objects.
# (fixed by --reproducible with nasm v2.15.05)
# Work around them by running it through binutils strip. This works for
# x64 and x86, but not for ARM64.
# x64, but not for ARM64.
#
# Most combinations/orders running binutils/llvm strip over the output results
# in different output, and except pure llvm-strip, all seem to be
Expand Down
3 changes: 1 addition & 2 deletions openssl.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ _VER="$1"
options=''

if [ "${_OS}" = 'win' ]; then
[ "${_CPU}" = 'x86' ] && options+=' mingw'
[ "${_CPU}" = 'x64' ] && options+=' mingw64'
if [ "${_CPU}" = 'a64' ]; then
# Sources:
Expand Down Expand Up @@ -65,7 +64,7 @@ _VER="$1"
if [ "${_OS}" = 'win' ]; then
options+=' -DUSE_BCRYPTGENRANDOM -lbcrypt'
fi
[ "${_CPU}" = 'x86' ] || options+=' enable-ec_nistp_64_gcc_128'
options+=' enable-ec_nistp_64_gcc_128'

if false; then
if [ -n "${_ZLIB}" ] && [ -d "../${_ZLIB}/${_PP}" ]; then
Expand Down

0 comments on commit 63b9e13

Please sign in to comment.