[clang] [openmp] [Libomp] Place generated OpenMP headers into build resource directory (PR #88007)

Joseph Huber via cfe-commits cfe-commits at lists.llvm.org
Mon Apr 8 20:18:46 PDT 2024


jhuber6 wrote:

> Hey, @jhuber. This change broke the flang build.
> 
> When I revert the change, everything builds cleanly. So I reverted it in merge request #88083.
> 
> After this change was added, I started getting messages like:
> 
> ```
> [4/205] Building CXX object projects/openmp/libomptarget/plugins-nextgen/host/CMakeFiles/omptarget.rtl.x86_64.dir/dynamic_ffi/ffi.cpp.o
> FAILED: projects/openmp/libomptarget/plugins-nextgen/host/CMakeFiles/omptarget.rtl.x86_64.dir/dynamic_ffi/ffi.cpp.o 
> /usr/bin/c++ -DDEBUG_PREFIX="\"TARGET x86_64 RTL\"" -DGTEST_HAS_RTTI=0 -DLIBOMPTARGET_NEXTGEN_GENERIC_PLUGIN_TRIPLE=\"x86_64-pc-linux-gnu\" -DOMPT_SUPPORT=1 -DTARGET_ELF_ID=EM_X86_64 -DTARGET_NAME=x86_64 -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/local/home/psteinfeld/up/build/projects/openmp/libomptarget/plugins-nextgen/host -I/local/home/psteinfeld/up/llvm-project/openmp/libomptarget/plugins-nextgen/host -I/local/home/psteinfeld/up/build/include -I/local/home/psteinfeld/up/llvm-project/llvm/include -I/local/home/psteinfeld/up/build/lib/clang/19/include -I/local/home/psteinfeld/up/llvm-project/openmp/libomptarget/plugins-nextgen/host/dynamic_ffi -I/local/home/psteinfeld/up/llvm-project/openmp/libomptarget/include -I/local/home/psteinfeld/up/llvm-project/openmp/libomptarget/plugins-nextgen/common/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -Wno-misleading-indentation -fdiagnostics-color -ffunction-sections -fdata-sections -Wall -Wcast-qual -Wimplicit-fallthrough -Wsign-compare -Wno-extra -Wno-pedantic -Wno-maybe-uninitialized -fno-semantic-interposition -fdata-sections -O3 -DNDEBUG -std=c++17 -fPIC -fvisibility=protected  -fno-exceptions -funwind-tables -fno-rtti -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -fno-exceptions -fno-rtti -MD -MT projects/openmp/libomptarget/plugins-nextgen/host/CMakeFiles/omptarget.rtl.x86_64.dir/dynamic_ffi/ffi.cpp.o -MF projects/openmp/libomptarget/plugins-nextgen/host/CMakeFiles/omptarget.rtl.x86_64.dir/dynamic_ffi/ffi.cpp.o.d -o projects/openmp/libomptarget/plugins-nextgen/host/CMakeFiles/omptarget.rtl.x86_64.dir/dynamic_ffi/ffi.cpp.o -c /local/home/psteinfeld/up/llvm-project/openmp/libomptarget/plugins-nextgen/host/dynamic_ffi/ffi.cpp
> In file included from /usr/include/wchar.h:35,
>                  from /usr/include/c++/8/cwchar:44,
>                  from /usr/include/c++/8/bits/postypes.h:40,
>                  from /usr/include/c++/8/bits/char_traits.h:40,
>                  from /usr/include/c++/8/string:40,
>                  from /local/home/psteinfeld/up/llvm-project/llvm/include/llvm/Support/DynamicLibrary.h:16,
>                  from /local/home/psteinfeld/up/llvm-project/openmp/libomptarget/plugins-nextgen/host/dynamic_ffi/ffi.cpp:13:
> /local/home/psteinfeld/up/build/lib/clang/19/include/stddef.h:31:42: error: missing binary operator before token "("
>  #if !defined(__STDDEF_H) || __has_feature(modules) ||                          \
>                                           ^
> In file included from /usr/include/wchar.h:38,
>                  from /usr/include/c++/8/cwchar:44,
>                  from /usr/include/c++/8/bits/postypes.h:40,
>                  from /usr/include/c++/8/bits/char_traits.h:40,
>                  from /usr/include/c++/8/string:40,
>                  from /local/home/psteinfeld/up/llvm-project/llvm/include/llvm/Support/DynamicLibrary.h:16,
>                  from /local/home/psteinfeld/up/llvm-project/openmp/libomptarget/plugins-nextgen/host/dynamic_ffi/ffi.cpp:13:
> /local/home/psteinfeld/up/build/lib/clang/19/include/stdarg.h:31:42: error: missing binary operator before token "("
> ```

So the error is caused by your `c++` not supporting `__has_feature` presumably. However I have no clue why that would happen due to this patch. I believe in a few days @jdoerfert will flip the switch and we won't even allow `libomptarget` to be built without using the runtimes support so this might not be worth thinking about too hard.

Any suggestions for reproducing it?

https://github.com/llvm/llvm-project/pull/88007


More information about the cfe-commits mailing list