On Fri, Feb 2, 2018 at 2:05 PM, Andres Freund <and...@anarazel.de> wrote: > On 2018-02-01 09:32:17 -0800, Jeff Davis wrote: >> On Wed, Jan 31, 2018 at 12:03 AM, Konstantin Knizhnik >> <k.knizh...@postgrespro.ru> wrote: >> > The same problem takes place with old versions of GCC: I have to upgrade >> > GCC >> > to 7.2 to make it possible to compile this code. >> > The problem in not in compiler itself, but in libc++ headers. >> >> How can I get this branch to compile on ubuntu 16.04? I have llvm-5.0 >> and gcc-5.4 installed. Do I need to compile with clang or gcc? Any >> CXXFLAGS required? > > Just to understand: You're running in the issue with the header being > included from within the extern "C" {}? Hm, I've pushed a quick fix for > that.
That change wasn't quite enough: to get this building against libc++ (Clang's native stdlb) I also needed this change to llvmjit.h so that <llvm-c/Types.h> wouldn't be included with the wrong linkage (perhaps you can find a less ugly way): +#ifdef __cplusplus +} +#endif #include <llvm-c/Types.h> +#ifdef __cplusplus +extern "C" +{ +#endif > Other than that, you can compile with both gcc or clang, but clang needs > to be available. Will be guessed from PATH if clang clang-5.0 clang-4.0 > (in that order) exist, similar with llvm-config llvm-config-5.0 being > guessed. LLVM_CONFIG/CLANG/CXX= as an argument to configure overrides > both of that. E.g. > ./configure --with-llvm LLVM_CONFIG=~/build/llvm/5/opt/install/bin/llvm-config > is what I use, although I also add: > LDFLAGS='-Wl,-rpath,/home/andres/build/llvm/5/opt/install/lib' > so I don't have to install llvm anywhere the system knows about. BTW if you're building with clang (vendor compiler on at least macOS and FreeBSD) you'll probably need CXXFLAGS=-std=c++11 (or later standard) because it's still defaulting to '98. -- Thomas Munro http://www.enterprisedb.com