vlang / v

Simple, fast, safe, compiled language for developing maintainable software. Compiles itself in <1s with zero library dependencies. Supports automatic C => V translation. https://vlang.io
MIT License
35.76k stars 2.16k forks source link

Failed to build with make -clang command #18463

Open tzSharing opened 1 year ago

tzSharing commented 1 year ago

Describe the bug

The make -clang command fails to build, but the make -tcc/-gcc command works

Expected Behavior

compile v.exe correctly

Current Behavior

D:\v>make -clang Updating TCC

Syncing TCC from https://github.com/vlang/tccbin

Updating vc...

Sync with remote https://github.com/vlang/vc

Building V...

Attempting to build "./v_win_bootstrap.exe" (from v_win.c) with Clang ./vc/v_win.c:22021:10: error: incompatible integer to pointer conversion initializing 'voidptr' (aka 'void ') with an expression of type 'DWORD' (aka 'unsigned long') [-Wint-conversion] ...res = FormatMessage(((FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM) | FORMAT_MESSAGE_IGNORE_INSERTS), NULL, err_msg_id, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), &msgbuf, 0, NULL); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./vc/v_win.c:41848:85: error: incompatible pointer to integer conversion passing 'voidptr' (aka 'void ') to parameter of type 'intptr_t' (aka 'long long') [-Wint-conversion] if (!(!atomic_compare_exchange_weak_ptr(((voidptr*)(&ch->adr_written)), &nulladr, ((voidptr)(-1))))) break; ^~~~~~~ ./vc/v_win.c:1352:42: note: expanded from macro 'atomic_compare_exchange_weak_ptr'

define atomic_compare_exchange_weak_ptr atomic_compare_exchange_weak

^ ./vc/v_win.c:1310:54: note: expanded from macro 'atomic_compare_exchange_weak' atomic_compare_exchange_strong(object, expected, desired) ^~~ ./vc/v_win.c:1298:59: note: passing argument to parameter 'desired' here intptr_t desired) ^ ./vc/v_win.c:41918:81: error: incompatible pointer to integer conversion passing 'void ' to parameter of type 'intptr_t' (aka 'long long') [-Wint-conversion] if (atomic_compare_exchange_strong_ptr(((voidptr)(&ch->write_adr)), &wradr, ((void)0))) { ^~~~~~ ./vc/v_win.c:1298:59: note: passing argument to parameter 'desired' here intptr_t desired) ^ ./vc/v_win.c:41922:88: error: incompatible pointer to integer conversion passing 'voidptr' (aka 'void ') to parameter of type 'intptr_t' (aka 'long long') [-Wint-conversion] if (!(!atomic_compare_exchange_weak_ptr(((voidptr*)(&ch->adr_written)), &nulladr, wradr))) break; ^~~~~ ./vc/v_win.c:1352:42: note: expanded from macro 'atomic_compare_exchange_weak_ptr'

define atomic_compare_exchange_weak_ptr atomic_compare_exchange_weak

^ ./vc/v_win.c:1310:54: note: expanded from macro 'atomic_compare_exchange_weak' atomic_compare_exchange_strong(object, expected, desired) ^~~ ./vc/v_win.c:1298:59: note: passing argument to parameter 'desired' here intptr_t desired) ^ ./vc/v_win.c:41958:80: error: incompatible pointer to integer conversion passing 'void ' to parameter of type 'intptr_t' (aka 'long long') [-Wint-conversion] if (atomic_compare_exchange_strong_ptr(((voidptr)(&ch->read_adr)), &src2, ((void)0))) { ^~~~~~ ./vc/v_win.c:1298:59: note: passing argument to parameter 'desired' here intptr_t desired) ^ ./vc/v_win.c:41978:80: error: incompatible pointer to integer conversion passing 'void ' to parameter of type 'intptr_t' (aka 'long long') [-Wint-conversion] if (atomic_compare_exchange_strong_ptr(((voidptr)(&ch->adr_read)), &src2, ((void)0))) { ^~~~~~ ./vc/v_win.c:1298:59: note: passing argument to parameter 'desired' here intptr_t desired) ^ ./vc/v_win.c:41999:97: error: incompatible pointer to integer conversion passing 'void ' to parameter of type 'intptr_t' (aka 'long long') [-Wint-conversion] ...if (have_swapped || atomic_compare_exchange_strong_ptr(((voidptr)(&ch->adr_read)), &src2, ((void)0))) { ^~~~~~ ./vc/v_win.c:1298:59: note: passing argument to parameter 'desired' here intptr_t desired) ^ ./vc/v_win.c:42008:96: error: incompatible pointer to integer conversion passing 'void ' to parameter of type 'intptr_t' (aka 'long long') [-Wint-conversion] if (have_swapped || atomic_compare_exchange_strong_ptr(((voidptr)(&ch->adr_read)), &src2, ((void)0))) { ^~~~~~ ./vc/v_win.c:1298:59: note: passing argument to parameter 'desired' here intptr_t desired) ^ ./vc/v_win.c:42109:81: error: incompatible pointer to integer conversion passing 'void ' to parameter of type 'intptr_t' (aka 'long long') [-Wint-conversion] if (atomic_compare_exchange_strong_ptr(((voidptr)(&ch->read_adr)), &rdadr, ((void)0))) { ^~~~~~ ./vc/v_win.c:1298:59: note: passing argument to parameter 'desired' here intptr_t desired) ^ ./vc/v_win.c:42113:86: error: incompatible pointer to integer conversion passing 'voidptr' (aka 'void ') to parameter of type 'intptr_t' (aka 'long long') [-Wint-conversion] ...if (!(!atomic_compare_exchange_weak_ptr(((voidptr*)(&ch->adr_read)), &nulladr, rdadr))) break; ^~~~~ ./vc/v_win.c:1352:42: note: expanded from macro 'atomic_compare_exchange_weak_ptr'

define atomic_compare_exchange_weak_ptr atomic_compare_exchange_weak

^ ./vc/v_win.c:1310:54: note: expanded from macro 'atomic_compare_exchange_weak' atomic_compare_exchange_strong(object, expected, desired) ^~~ ./vc/v_win.c:1298:59: note: passing argument to parameter 'desired' here intptr_t desired) ^ ./vc/v_win.c:42204:82: error: incompatible pointer to integer conversion passing 'void ' to parameter of type 'intptr_t' (aka 'long long') [-Wint-conversion] if (atomic_compare_exchange_strong_ptr(((voidptr)(&ch->write_adr)), &dest2, ((void)0))) { ^~~~~~ ./vc/v_win.c:1298:59: note: passing argument to parameter 'desired' here intptr_t desired) ^ ./vc/v_win.c:42225:83: error: incompatible pointer to integer conversion passing 'void ' to parameter of type 'intptr_t' (aka 'long long') [-Wint-conversion] if (atomic_compare_exchange_strong_ptr(((voidptr)(&ch->adr_written)), &dest2, ((void)0))) { ^~~~~~ ./vc/v_win.c:1298:59: note: passing argument to parameter 'desired' here intptr_t desired) ^ ./vc/v_win.c:42248:99: error: incompatible pointer to integer conversion passing 'void ' to parameter of type 'intptr_t' (aka 'long long') [-Wint-conversion] if (have_swapped || atomic_compare_exchange_strong_ptr(((voidptr)(&ch->adr_written)), &dest2, ((void*)0))) { ^~~~~~ ./vc/v_win.c:1298:59: note: passing argument to parameter 'desired' here intptr_t desired) ^ 13 errors generated. In most cases, compile errors happen because the version of Clang installed is too old (built by Brecht Sanders) clang version 16.0.4 Target: x86_64-w64-windows-gnu Thread model: posix InstalledDir: D:/mingw64/bin

Backend compiler error

Exiting from error ERROR: please follow the instructions in https://github.com/vlang/v/wiki/Installing-a-C-compiler-on-Windows

Reproduction Steps

make -clang

Possible Solution

No response

Additional Information/Context

No response

V version

0.3.4 34163ae

Environment details (OS name and version, etc.)

V full version: V 0.3.4 34163ae OS: windows, Microsoft Windows 10 רҵ v19045 64 λ Processor: 4 cpus, 64bit, little endian,

getwd: D:\v vexe: D:\v\v.exe vexe mtime: 2023-06-15 18:57:44

vroot: OK, value: D:\v VMODULES: OK, value: C:\Users\TZ.vmodules VTMP: OK, value: C:\Users\TZ\AppData\Local\Temp\v_0

Git version: git version 2.36.0.windows.1 Git vroot status: weekly.2023.21-121-g34163ae4 .git/config present: true

CC version: Error: exec failed (CreateProcess) with code 2: 系统找不到指定的文件。 cmd: cc --version thirdparty/tcc status: thirdparty-windows-amd64 e90c2620

spytheman commented 1 year ago

Please post also the result of clang --version.

tzSharing commented 1 year ago

Please post also the result of clang --version.

C:\Users\TZ>clang --version (built by Brecht Sanders) clang version 16.0.4 Target: x86_64-w64-windows-gnu Thread model: posix InstalledDir: D:/mingw64/bin