123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- #!/usr/bin/env bash
- #***************************************************************************
- # _ _ ____ _
- # Project ___| | | | _ \| |
- # / __| | | | |_) | |
- # | (__| |_| | _ <| |___
- # \___|\___/|_| \_\_____|
- #
- # Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
- #
- # This software is licensed as described in the file COPYING, which
- # you should have received as part of this distribution. The terms
- # are also available at https://curl.se/docs/copyright.html.
- #
- # You may opt to use, copy, modify, merge, publish, distribute and/or sell
- # copies of the Software, and permit persons to whom the Software is
- # furnished to do so, under the terms of the COPYING file.
- #
- # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- # KIND, either express or implied.
- #
- # SPDX-License-Identifier: curl
- #
- ###########################################################################
- # shellcheck disable=SC3040,SC2039
- set -eux; [ -n "${BASH:-}${ZSH_NAME:-}" ] && set -o pipefail
- # build
- if [ "${APPVEYOR_BUILD_WORKER_IMAGE}" = 'Visual Studio 2022' ]; then
- openssl_root_win='C:/OpenSSL-v32-Win64'
- else
- openssl_root_win='C:/OpenSSL-v111-Win64'
- fi
- openssl_root="$(cygpath "${openssl_root_win}")"
- if [ "${BUILD_SYSTEM}" = 'CMake' ]; then
- options=''
- [[ "${TARGET:-}" = *'ARM64'* ]] && SKIP_RUN='ARM64 architecture'
- [ "${OPENSSL}" = 'ON' ] && options+=" -DOPENSSL_ROOT_DIR=${openssl_root_win}"
- [ -n "${CURLDEBUG:-}" ] && options+=" -DENABLE_CURLDEBUG=${CURLDEBUG}"
- [ "${PRJ_CFG}" = 'Debug' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG='
- [ "${PRJ_CFG}" = 'Release' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE='
- [[ "${PRJ_GEN}" = *'Visual Studio'* ]] && options+=' -DCMAKE_VS_GLOBALS=TrackFileAccess=false'
- if [ "${PRJ_GEN}" = 'Visual Studio 9 2008' ]; then
- [ "${DEBUG}" = 'ON' ] && [ "${SHARED}" = 'ON' ] && SKIP_RUN='Crash on startup in ENABLE_DEBUG=ON shared builds'
- # Fails to run without this due to missing MSVCR90.dll / MSVCR90D.dll
- options+=' -DCURL_STATIC_CRT=ON'
- fi
- # shellcheck disable=SC2086
- cmake -B _bld "-G${PRJ_GEN}" ${TARGET:-} ${options} \
- "-DCURL_USE_OPENSSL=${OPENSSL}" \
- "-DCURL_USE_SCHANNEL=${SCHANNEL}" \
- "-DHTTP_ONLY=${HTTP_ONLY}" \
- "-DBUILD_SHARED_LIBS=${SHARED}" \
- "-DENABLE_WEBSOCKETS=${WEBSOCKETS:-}" \
- "-DCMAKE_UNITY_BUILD=${UNITY}" \
- '-DCURL_WERROR=ON' \
- "-DENABLE_DEBUG=${DEBUG}" \
- "-DENABLE_UNICODE=${ENABLE_UNICODE}" \
- '-DCMAKE_INSTALL_PREFIX=C:/curl' \
- "-DCMAKE_BUILD_TYPE=${PRJ_CFG}"
- # shellcheck disable=SC2086
- if ! cmake --build _bld --config "${PRJ_CFG}" --parallel 2 -- ${BUILD_OPT:-}; then
- if [ "${PRJ_GEN}" = 'Visual Studio 9 2008' ]; then
- find . -name BuildLog.htm -exec dos2unix '{}' +
- find . -name BuildLog.htm -exec cat '{}' +
- fi
- false
- fi
- if [ "${SHARED}" = 'ON' ]; then
- cp -f -p _bld/lib/*.dll _bld/src/
- fi
- if [ "${OPENSSL}" = 'ON' ]; then
- cp -f -p "${openssl_root}"/*.dll _bld/src/
- fi
- curl='_bld/src/curl.exe'
- elif [ "${BUILD_SYSTEM}" = 'VisualStudioSolution' ]; then
- (
- cd projects
- ./generate.bat "${VC_VERSION}"
- msbuild.exe -maxcpucount "-property:Configuration=${PRJ_CFG}" "Windows/${VC_VERSION}/curl-all.sln"
- )
- curl="build/Win32/${VC_VERSION}/${PRJ_CFG}/curld.exe"
- elif [ "${BUILD_SYSTEM}" = 'winbuild_vs2015' ]; then
- ./buildconf.bat
- (
- cd winbuild
- cat << EOF > _make.bat
- call "C:/Program Files/Microsoft SDKs/Windows/v7.1/Bin/SetEnv.cmd" /x64
- call "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/vcvarsall.bat" x86_amd64
- nmake -f Makefile.vc mode=dll VC=14 "SSL_PATH=${openssl_root_win}" WITH_SSL=dll MACHINE=x64 DEBUG=${DEBUG} ENABLE_UNICODE=${ENABLE_UNICODE}
- EOF
- ./_make.bat
- rm _make.bat
- )
- curl="builds/libcurl-vc14-x64-${PATHPART}-dll-ssl-dll-ipv6-sspi/bin/curl.exe"
- elif [ "${BUILD_SYSTEM}" = 'winbuild_vs2017' ]; then
- ./buildconf.bat
- (
- cd winbuild
- cat << EOF > _make.bat
- call "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build/vcvars64.bat"
- nmake -f Makefile.vc mode=dll VC=14.10 "SSL_PATH=${openssl_root_win}" WITH_SSL=dll MACHINE=x64 DEBUG=${DEBUG} ENABLE_UNICODE=${ENABLE_UNICODE} ENABLE_WEBSOCKETS=yes
- EOF
- ./_make.bat
- rm _make.bat
- )
- curl="builds/libcurl-vc14.10-x64-${PATHPART}-dll-ssl-dll-ipv6-sspi/bin/curl.exe"
- fi
- find . -name '*.exe' -o -name '*.dll'
- if [ -z "${SKIP_RUN:-}" ]; then
- "${curl}" --disable --version
- else
- echo "Skip running curl.exe. Reason: ${SKIP_RUN}"
- fi
- if false; then
- for log in CMakeFiles/CMakeConfigureLog.yaml CMakeFiles/CMakeOutput.log CMakeFiles/CMakeError.log; do
- [ -r "_bld/${log}" ] && cat "_bld/${log}"
- done
- fi
- # build tests
- if [[ "${TFLAGS}" != 'skipall' ]] && \
- [ "${BUILD_SYSTEM}" = 'CMake' ]; then
- cmake --build _bld --config "${PRJ_CFG}" --parallel 2 --target testdeps
- fi
- # run tests
- if [[ "${TFLAGS}" != 'skipall' ]] && \
- [[ "${TFLAGS}" != 'skiprun' ]]; then
- if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then
- TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")"
- elif [ -x "$(cygpath 'C:/msys64/usr/bin/curl.exe')" ]; then
- TFLAGS+=" -ac $(cygpath 'C:/msys64/usr/bin/curl.exe')"
- fi
- if [ "${BUILD_SYSTEM}" = 'CMake' ]; then
- ls _bld/lib/*.dll >/dev/null 2>&1 && cp -f -p _bld/lib/*.dll _bld/tests/libtest/
- cmake --build _bld --config "${PRJ_CFG}" --target test-ci
- else
- (
- TFLAGS="-a -p !flaky -r -rm ${TFLAGS}"
- cd _bld/tests
- ./runtests.pl
- )
- fi
- fi
|