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

Clang/GCC incompatiblity #2

Open
Garcia6l20 opened this issue Oct 12, 2020 · 5 comments
Open

Clang/GCC incompatiblity #2

Garcia6l20 opened this issue Oct 12, 2020 · 5 comments

Comments

@Garcia6l20
Copy link

There are few problems with clang.

First, It is not able to find GCC headers, it is caused by -fcoroutines-ts and -fcoroutines does not define the same preprocessor definition, It can be workarounded with -D__cpp_impl_coroutine=1 (what -fcoroutines does).

And now, clang complains that a coroutine cannot be used without <experimental/coroutine> inclusion what is breaking with GCC.

eg.:

~/cppcoro/test/async_latch_tests.cpp:59:4: error: std::experimental::coroutine_traits type was not found; include <experimental/coroutine> before defining a coroutine
                        co_await latch;
                        ^

Currently the only way to use with clang is to use libc++ (tested with clang-12 on Arch):

cmake -DCMAKE_CXX_FLAGS="-stdlib=libc++" <path_to_sources>
@Garcia6l20
Copy link
Author

On ubuntu, executables must be explicitly linked with -lc++:

cmake -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_EXE_LINKER_FLAGS="-lc++" <path_to_sources>

@andreasbuhr
Copy link
Owner

Is this now solved with the latest changes in the integrate_all branch?

@Garcia6l20
Copy link
Author

No, it is not.
Clang will only compile with libc++, but it should also work with libstdc++.
This won't change until clang updates it's coroutine header to non-experimental path, or even accept it.

andreasbuhr pushed a commit that referenced this issue Nov 4, 2020
@andreasbuhr
Copy link
Owner

I guess this is solved in the master branch of andreasbuhr/cppcoro?
I see that more documentation is required.

@Garcia6l20
Copy link
Author

The answer is simple can you build it with clang without --stdlib=libc++ ?

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