From: michals Date: 2022-06-13T11:06:10+00:00 Subject: [ruby-core:108870] [Ruby master Bug#18823] _Bool not defined for C++ Issue #18823 has been updated by michals (Michal Such��nek). ``` generating cxxanyargs-x64-mswin64_140.def compiling ../../../../src/ext/-test-/cxxanyargs/cxxanyargs.cpp cxxanyargs.cpp D:\a\ruby\ruby\src\include\ruby/internal/intern/select/win32.h(213): error C2061: syntax error: identifier '_Bool' D:\a\ruby\ruby\src\include\ruby/internal/intern/select.h(84): error C2061: syntax error: identifier '_Bool' NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\cl.EXE"' : return code '0x2' Stop. NMAKE : fatal error U1077: 'cd' : return code '0x2' Stop. NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\nmake.EXE"' : return code '0x2' ``` ``` Run ../src/configure -C ${default_configure} ${append_configure} --with-gcc="${default_cc} ${append_cc}" --enable-shared configure: creating cache config.cache checking for ruby... /usr/bin/ruby made symlink config.guess to .downloaded-cache/config.guess made symlink config.sub to .downloaded-cache/config.sub checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking target system type... x86_64-pc-linux-gnu checking for llvm-ar-14... llvm-ar-14 checking for clang++-14... clang++-14 checking for llvm-nm-14... llvm-nm-14 checking for llvm-objcopy-14... llvm-objcopy-14 checking for llvm-objdump-14... llvm-objdump-14 checking for llvm-ranlib-14... llvm-ranlib-14 checking for llvm-strip-14... llvm-strip-14 checking for gcc... clang-14 ... compiling ../../../../src/ext/-test-/debug/init.c In file included from ../../../../src/ext/-test-/cxxanyargs/cxxanyargs.cpp:1: In file included from ../../../../src/include/ruby/ruby.h:193: In file included from ../../../../src/include/ruby/intern.h:54: In file included from ../../../../src/include/ruby/internal/intern/select.h:35: ../../../../src/include/ruby/internal/intern/select/largesize.h:179:127: error: unknown type name '_Bool' int rb_fd_select(int nfds, rb_fdset_t *rfds, rb_fdset_t *wfds, rb_fdset_t *efds ,rb_fdset_t *errfds, struct timeval *timeout, _Bool select); ^ In file included from ../../../../src/ext/-test-/cxxanyargs/cxxanyargs.cpp:1: In file included from ../../../../src/include/ruby/ruby.h:193: In file included from ../../../../src/include/ruby/intern.h:54: ../../../../src/include/ruby/internal/intern/select.h:84:134: error: unknown type name '_Bool' int rb_thread_fd_select(int nfds, rb_fdset_t *rfds, rb_fdset_t *wfds, rb_fdset_t *efds ,rb_fdset_t *errfds, struct timeval *timeout, _Bool select); ^ 2 errors generated. ``` ---------------------------------------- Bug #18823: _Bool not defined for C++ https://bugs.ruby-lang.org/issues/18823#change-97951 * Author: michals (Michal Such��nek) * Status: Feedback * Priority: Normal * ruby -v: ruby 3.2.0dev (2022-06-12T17:35:26Z master 8158f05e72) * Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN ---------------------------------------- When a _Bool argument is added to rb_fd_select ruby cannot be compiled on VisualStudio 2022 VisualStudio 2019 gcc-5 gcc-4.8 clang-5 clang-4 clang-3.9 c++98 (llvm 14) c++2a (llvm 14) which suggests that `if defined(HAVE_STDBOOL_H) && (__cplusplus >= 201103L)` in `include/ruby/internal/stdbool.h` may not be a great way to detect that C++ has bool, especially on Visual Studio. -- https://bugs.ruby-lang.org/ Unsubscribe: