Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wamr windows build error with UVWASI #3805

Open
calvin2021y opened this issue Sep 20, 2024 · 7 comments
Open

wamr windows build error with UVWASI #3805

calvin2021y opened this issue Sep 20, 2024 · 7 comments

Comments

@calvin2021y
Copy link

build for windows get error with uvwasi.

@calvin2021y
Copy link
Author

wamr/core/shared/platform/windows/win_file.c:87:13: warning: label followed by a declaration is a C23 extension [-Wc23-extensions]
   87 |             FILE_ATTRIBUTE_TAG_INFO file_info;
      |             ^
wamr/core/shared/platform/windows/win_file.c:865:13: warning: label followed by a declaration is a C23 extension [-Wc23-extensions]
  865 |             bool success = CloseHandle(handle->raw.handle);
      |             ^
/llvm/lib/clang/18/include/stdbool.h:20:14: note: expanded from macro 'bool'
   20 | #define bool _Bool
      |              ^
wamr/core/shared/platform/windows/win_file.c:872:13: warning: label followed by a declaration is a C23 extension [-Wc23-extensions]
  872 |             int ret = closesocket(handle->raw.socket);
      |             ^
[ 45%] Building C object CMakeFiles/iwasm_static.dir/core/shared/utils/bh_assert.c.obj
[ 45%] Building C object CMakeFiles/iwasm_static.dir/core/shared/utils/bh_bitmap.c.obj
[ 47%] Building C object CMakeFiles/iwasm_static.dir/core/shared/utils/bh_common.c.obj
wamr/core/shared/platform/windows/win_file.c:1298:31: warning: backslash and newline separated by space [-Wbackslash-newline-escape]
 1298 |             // Starts with \??\ 
      |                               ^
wamr/core/shared/platform/windows/win_file.c:1300:20: error: expected identifier
 1300 |                 && ((wbuf[4] >= L'A' && wbuf[4] <= L'Z')
      |                    ^
wamr/core/shared/platform/windows/win_file.c:1304:36: warning: backslash and newline separated by space [-Wbackslash-newline-escape]
 1304 |                     // \??\<drive>:\ 
      |                                    ^
wamr/core/shared/platform/windows/win_file.c:1313:106: warning: backslash and newline separated by space [-Wbackslash-newline-escape]
 1313 |                     // \??\UNC\<server>\<share>\ - make sure the fin[ 50%] Building C object CMakeFiles/iwasm_static.dir/core/shared/utils/bh_hashmap.c.obj
al path looks like \\<server>\<share>\ 
      |                                                                                                          ^
wamr/core/shared/platform/windows/win_thread.c:534:16: warning: comparison of integers of different signs: 'int' and 'DWORD' (aka 'unsigned long') [-Wsign-compare]
  534 |     return ret != WAIT_FAILED ?wamr/core/shared/platform/windows/win_file.c:1564 B:HT_O32K : BHT_ERROR;
      |            ~~~ ^  ~~~~~~~~~~~
: error: incompatible integer to pointer conversion passing 'os_raw_file_handle' (aka 'unsigned int') to parameter of type 'HANDLE' (aka 'void *') [-Wint-conversion]
 1564 |     return create_stdio_handle(raw_stdi[ 52%] Building C object CMakeFiles/iwasm_static.dir/core/shared/utils/bh_leb128.c.obj
n, STD_INPUT_HANDLE);
      |                                ^~~~~~~~~
wamr/core/shared/platform/windows/win_file.c:1523:28: note: passing argument to parameter 'raw_stdio_handle' here
 1523 | create_stdio_handle(HANDLE raw_stdio_handle, DWORD stdio)
      |                            ^
wamr/core/shared/platform/windows/win_file.c:1570:32: error: incompatible integer to pointer conversion passing 'os_raw_file_handle' (aka 'unsigned int') to parameter of type 'HANDLE' (aka 'void *') [-Wint-conversion]
 1570 |     return create_stdio_handle(raw_stdout, STD_OUTPUT_HANDLE);
      |                                ^~~~~~~~~~
wamr/core/shared/platform/windows/win_file.c:1523:28: note: passing argument to parameter 'raw_stdio_handle' here
 1523 | create_stdi[ 57%] Building C object CMakeFiles/iwasm_static.dir/core/shared/utils/bh_log.c.obj
o[ 57%] Building C object CMakeFiles/iwasm_static.dir/core/shared/utils/bh_list.c.obj
_handle(HANDLE raw_stwamr/core/shared/platform/windows/win_thread.c:722:8: warning: unknown attribute 'thread' ignored [-Wunknown-attributes]
  d722 | static os_thread_local_attribute uint8 *thread_stack_boundary = NULL;
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~
wamr/core/shared/platform/windows/platform_internal.h:95:46: note: expanded from macro 'os_thread_local_attribute'
   95 | #define os_thread_local_attribute __declspec(thread)
      |                                              ^~~~~~
io_ha<built-in>:388:38: note: expanded from macro '__declspec'
  n388 | #define __declspec(a) __attribute__((a))
      |                                      ^
dle, DWORD stdio)
      |                            ^
wamr/core/shared/platform/windows/win_file.c:1576:32: error: incompatible integer to pointer conversion passing 'os_raw_file_handle' (aka 'unsigned int') to parameter of type 'HANDLE' (aka 'void *') [-Wint-conversion]
 1576 |  wamr/core/shared/platform/windows/win_thread.c:776:8: warning: unknown attribute 'thread' ignored [-Wunknown-attributes]
  776 | static os_thread_local_attribute bool thread_signal_inited = false;
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~
 wamr/core/shared/platform/windows/platform_internal.h:95:46: note: expanded from macro 'os_thread_local_attribute'
   95 | #define os_thread_local_attribute __declspec(thread)
      |                                              ^~~~~~
<built-in>:388:38: note: expanded from macro '__declspec'
    retur388 | #define __declspec(a) __attribute__((a))
      |                                      ^
n create_stdio_handle(raw_stderr, STD_ERROR_HANDLE);
      |                                ^~~~~~~~~~
wamr/core/shared/platform/windows/win_file.c:1523:28: note: passing argument to parameter 'raw_stdio_handle' here
 1523 | create_stdio_handle(HANDLE raw_stdio_handle, DWORD stdio)
      |                            ^
wamr/core/shared/platform/windows/win_file.c:1705:28: warning: comparison of integers of different signs: 'int' and '__wasi_dircookie_t' (aka 'unsigned long long') [-Wsign-compare]
 1705 |     if (dir_stream->cookie == position)
      |         ~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~
wamr/core/shared/platform/windows/win_file.c:1708:28: warning: comparison of integers of different signs: 'int' and '__wasi_dircookie_t' (aka 'unsigned long long') [-Wsign-compare]
 1708 |     if (dir_stream->cookie > position) {
      |         ~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~
wamr/core/shared/platform/windows/win_file.c:1712:31: warning: comparison of integers of different signs: 'int' and '__wasi_dircookie_t' (aka 'unsigned long long') [-Wsign-compare]
 1712 |     while (dir_stream->cookie < position) {
      |            ~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~
wamr/core/shared/platform/windows/win_file.c:1761:23: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
 1761 |         if (win_error = ERROR_INVALID_HANDLE)
      |             ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
wamr/core/shared/platform/windows/win_file.c:1761:23: note: place parentheses around the assignment to silence this warning
 1761 |         if (win_error = ERROR_INVALID_HANDLE)
      |                       ^                     
      |             (                               )
wamr/core/shared/platform/windows/win_file.c:1761:23: note: use '==' to turn this assignment into an equality comparison
 1761 |         if (win_error = ERROR_INVALID_HANDLE)
      |                       ^
      |                       ==
10 warnings and 4 errors generated.
make[2]: *** [CMakeFiles/iwasm_static.dir/build.make:122: CMakeFiles/iwasm_static.dir/core/shared/platform/windows/win_file.c.obj] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 59%] Building C object CMakeFiles/iwasm_static.dir/core/shared/utils/bh_queue.c.obj
wamr/core/shared/platform/windows/win_socket.c:186:71: warning: passing 'unsigned int *' to parameter of type 'int *' converts between pointers to integer types with different sign [-Wpointer-sign]
  186 |         accept(server_sock->raw.socket, (struct sockaddr *)&addr_tmp, &len);
      |                                                                       ^~~~
/opt/local/mingw18/x86_64-w64-mingw32/include/winsock2.h:1003:80: note: passing argument to parameter 'addrlen' here
 1003 |   WINSOCK_API_LINKAGE SOCKET WSAAPI accept(SOCKET s,struct sockaddr *addr,int *addrlen);
      |                                                                                ^

@calvin2021y
Copy link
Author

I guess maybe add uvwasi platform type here for all os use uvwasi?

@wenyongh
Copy link
Contributor

Thanks for reporting the issue, could you check whether PR #3810 fixes your issue? Note that had better remove files under build and re-run cmake .. to re-generate the cmake temp files.

@calvin2021y
Copy link
Author

Yes, it fix the build error.

@calvin2021y
Copy link
Author

has 2 warning left

wamr/core/shared/platform/windows/win_socket.c:186:71: warning: passing 'unsigned int *' to parameter of type 'int *' converts between pointers to integer types with different sign [-Wpointer-sign]
  186 |         accept(server_sock->raw.socket, (struct sockaddr *)&addr_tmp, &len);
      |                                                                       ^~~~

wamr/core/iwasm/common/wasm_runtime_common.c:404:33: warning: passing arguments to 'os_thread_signal_init' without a prototype is deprecated in all versions of C and is not supported in C23 [-Wdeprecated-non-prototype]
  404 |     return os_thread_signal_init(runtime_signal_handler) == 0 ? true : false;
      |                                 ^
1 warning generated.

@wenyongh
Copy link
Contributor

Fixed the first warning. For the second warning, it is strange that this line is compiled, which means the macro BH_PLATFORM_WINDOWS isn't defined:

#ifndef BH_PLATFORM_WINDOWS
return os_thread_signal_init(runtime_signal_handler) == 0 ? true : false;
#else

But the macro should have been defined in platform_internal.h:
#ifndef BH_PLATFORM_WINDOWS
#define BH_PLATFORM_WINDOWS
#endif

Which CMakeLists.txt did you use to build the project, the CMakeLists.txt under wamr root dir, or the CMakeLists.txt under product-mini/platforms/windows?

@calvin2021y
Copy link
Author

I build this projects for clang with mingw, I guess clang+mingw use posix solution for exception so use patch remove BH_PLATFORM_WINDOWS

#3809

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants