v
v copied to clipboard
[Windows] Failed to compile V with clang & GCC
Describe the bug
Failed to compile V on Windows with clang
Expected Behavior
> V built successfully
Current Behavior
clang:
C:\Users\user\v>make.bat -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:21475: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:40592: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:1341:42: note: expanded from macro 'atomic_compare_exchange_weak_ptr'
#define atomic_compare_exchange_weak_ptr atomic_compare_exchange_weak
^
./vc/v_win.c:1299:54: note: expanded from macro 'atomic_compare_exchange_weak'
atomic_compare_exchange_strong(object, expected, desired)
^~~~~~~
./vc/v_win.c:1287:59: note: passing argument to parameter 'desired' here
intptr_t desired)
^
./vc/v_win.c:40662: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:1287:59: note: passing argument to parameter 'desired' here
intptr_t desired)
^
./vc/v_win.c:40666: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:1341:42: note: expanded from macro 'atomic_compare_exchange_weak_ptr'
#define atomic_compare_exchange_weak_ptr atomic_compare_exchange_weak
^
./vc/v_win.c:1299:54: note: expanded from macro 'atomic_compare_exchange_weak'
atomic_compare_exchange_strong(object, expected, desired)
^~~~~~~
./vc/v_win.c:1287:59: note: passing argument to parameter 'desired' here
intptr_t desired)
^
./vc/v_win.c:40702: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:1287:59: note: passing argument to parameter 'desired' here
intptr_t desired)
^
./vc/v_win.c:40722: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:1287:59: note: passing argument to parameter 'desired' here
intptr_t desired)
^
./vc/v_win.c:40743: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:1287:59: note: passing argument to parameter 'desired' here
intptr_t desired)
^
./vc/v_win.c:40752: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:1287:59: note: passing argument to parameter 'desired' here
intptr_t desired)
^
./vc/v_win.c:40853: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:1287:59: note: passing argument to parameter 'desired' here
intptr_t desired)
^
./vc/v_win.c:40857: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:1341:42: note: expanded from macro 'atomic_compare_exchange_weak_ptr'
#define atomic_compare_exchange_weak_ptr atomic_compare_exchange_weak
^
./vc/v_win.c:1299:54: note: expanded from macro 'atomic_compare_exchange_weak'
atomic_compare_exchange_strong(object, expected, desired)
^~~~~~~
./vc/v_win.c:1287:59: note: passing argument to parameter 'desired' here
intptr_t desired)
^
./vc/v_win.c:40948: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:1287:59: note: passing argument to parameter 'desired' here
intptr_t desired)
^
./vc/v_win.c:40969: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:1287:59: note: passing argument to parameter 'desired' here
intptr_t desired)
^
./vc/v_win.c:40992: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:1287: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
clang version 15.0.7
Target: x86_64-w64-windows-gnu
Thread model: posix
InstalledDir: C:/Users/user/msys2/clang64/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
C:\Users\user\v>
gcc:
C:\Users\user\v>make.bat -gcc
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 GCC
gcc: error: unrecognized command-line option ‘-municode’
In most cases, compile errors happen because the version of GCC installed is too old
gcc (GCC) 11.3.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Backend compiler error
Exiting from error
ERROR: please follow the instructions in https://github.com/vlang/v/wiki/Installing-a-C-compiler-on-Windows
C:\Users\user\v>
Reproduction Steps
- Install MSYS2
- Install clang and/or gcc via MSYS2
- Make sure compiler path is in
%PATH%
- Change into V directory
- Run
make.bat -clang
Possible Solution
No response
Additional Information/Context
No response
V version
0.3.3 c173104
Environment details (OS name and version, etc.)
OS: windows, Windows 10 Pro v19045 64-ࠧ來 Processor: 4 cpus, 64bit, little endian, CC version: cc (GCC) 11.3.0
getwd: C:\Users\user\v vmodules: C:\Users\user.vmodules vroot: C:\Users\user\v vexe: C:\Users\user\v\v.exe vexe mtime: 2023-02-22 13:30:18 is vroot writable: true is vmodules writable: true V full version: V 0.3.3 c003bfd.c173104
Git version: git version 2.39.0.windows.2 Git vroot status: weekly.2023.03-199-gc1731042 .git/config present: true thirdparty/tcc status: thirdparty-windows-amd64 1e6e7c6f
We recommend gcc/clang from https://winlibs.com instead of MSYS2.
Very few have gotten the MSYS2 stuff to work properly, while the winlibs version has worked well for pretty much everyone who has tried it.
I tried it, same errors
How did you try installing V? If you didn't do it by cloning the repo, that is the preferred method. https://github.com/vlang/v#installing-v-from-source
I cloned repo via Git and ran make.bat
Same here. Using the binary from the website and running 'v self' is working well.