mirror of
https://github.com/curl/curl.git
synced 2026-01-18 17:21:26 +01:00
build: fix clang-cl builds, add CI job
- appveyor: add build-only job for clang-cl. - cmake: `-pedantic-errors` enables `-Werror,-Wlanguage-extension-token` automatically, which makes `__int64` detection fail. Explictly disable this compiler warning for clang-cl to make the feature detection work and to accept `__int64` in the source code. - cmake: disable `-Wlanguage-extension-token` warning for clang-cl to fix these when encountering `__int64`: ``` lib/formdata.c(797,29): error : extension used [-Werror,-Wlanguage-extension-token] lib/warnless.c(117,33): error : extension used [-Werror,-Wlanguage-extension-token] lib/warnless.c(60,28): message : expanded from macro 'CURL_MASK_SCOFFT' lib/warnless.c(59,38): message : expanded from macro 'CURL_MASK_UCOFFT' include\curl/system.h(352,40): message : expanded from macro 'CURL_TYPEOF_CURL_OFF_T' ``` - make `__GNUC__` warning suppressions apply to `__clang__` too. Necessary for clang-cl, which defines the latter, but not the former. (Regular clang defines both.) - examples: fix clang-cl compiler warning in `http2-upload.c`. ``` docs\examples\http2-upload.c(56,5): error : no previous prototype for function 'my_gettimeofday' [-Werror,-Wmissing-prototypes] docs\examples\http2-upload.c(56,1): message : declare 'static' if the function is not intended to be used outside of this translation unit ``` - unit2604: add missing `#pragma GCC diagnostic pop`. Follow-up toe53523fef0#14859 - unit1652: limit compiler warning suppression to GCC. They do not affect clang builds. Follow-up to71cf0d1fca#14772 Closes #15449
This commit is contained in:
@@ -38,6 +38,7 @@ openssl_root="$(cygpath "${openssl_root_win}")"
|
||||
if [ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
||||
options=''
|
||||
[[ "${TARGET:-}" = *'ARM64'* ]] && SKIP_RUN='ARM64 architecture'
|
||||
[ -n "${TOOLSET:-}" ] && options+=" -T ${TOOLSET}"
|
||||
[ "${OPENSSL}" = 'ON' ] && options+=" -DOPENSSL_ROOT_DIR=${openssl_root_win}"
|
||||
[ -n "${CURLDEBUG:-}" ] && options+=" -DENABLE_CURLDEBUG=${CURLDEBUG}"
|
||||
[ "${PRJ_CFG}" = 'Debug' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG='
|
||||
@@ -62,6 +63,9 @@ if [ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
||||
'-DCMAKE_INSTALL_PREFIX=C:/curl' \
|
||||
"-DCMAKE_BUILD_TYPE=${PRJ_CFG}" \
|
||||
'-DCURL_USE_LIBPSL=OFF'
|
||||
if false; then
|
||||
cat _bld/CMakeFiles/CMakeConfigureLog.yaml 2>/dev/null || true
|
||||
fi
|
||||
echo 'curl_config.h'; grep -F '#define' _bld/lib/curl_config.h | sort || true
|
||||
# shellcheck disable=SC2086
|
||||
if ! cmake --build _bld --config "${PRJ_CFG}" --parallel 2 -- ${BUILD_OPT:-}; then
|
||||
@@ -119,10 +123,6 @@ else
|
||||
echo "Skip running curl.exe. Reason: ${SKIP_RUN}"
|
||||
fi
|
||||
|
||||
if false; then
|
||||
cat CMakeFiles/CMakeConfigureLog.yaml 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# build tests
|
||||
|
||||
if [[ "${TFLAGS}" != 'skipall' ]] && \
|
||||
|
||||
Reference in New Issue
Block a user