PostgreSQL 12 build issues on Solaris 11.4

+CC Kamil who might know the answer.

Hi Eric,

Hello,

With the official llvm/clang release for Solaris 11.4 I tried to build PostgreSQL 12 with JIT enabled. JIT uses LLVM. However, the build fails with the following error :

gmake[2] : on entre dans le répertoire « /tmp/build/pg12/postgresql-12.0/src/backend/jit/llvm »
g++ -Wall -Wpointer-arith -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -O2 -march=native -mtune=native -std=c++11 -fno-rtti -fPIC -D__STDC_LIMIT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -I/appli/stig/llvm/clang+llvm-9.0.0-amd64-pc-solaris2.11/include -I../../../../src/include -I/usr/include/libxml2 -c -o llvmjit_inline.o llvmjit_inline.cpp
Dans le fichier inclus depuis /usr/include/sys/ucontext.h:14,
                 depuis /usr/include/sys/signal.h:197,
                 depuis /usr/include/sys/procset.h:17,
                 depuis /usr/include/sys/wait.h:22,
                 depuis /usr/include/stdlib.h:16,
                 depuis /usr/gcc/9/include/c++/9.1.0/cstdlib:75,
                 depuis /usr/gcc/9/include/c++/9.1.0/stdlib.h:36,
                 depuis ../../../../src/include/c.h:60,
                 depuis ../../../../src/include/postgres.h:46,
                 depuis llvmjit_inline.cpp:24:
/appli/stig/llvm/clang+llvm-9.0.0-amd64-pc-solaris2.11/include/llvm/IR/DebugInfoMetadata.h:493:45: erreur: expected « , » or « ... » before numeric constant
  493 | Optional<ChecksumInfo<MDString *>> CS, Optional<MDString *> Src,
      > ^~

I have encountered this issue quite often on Solaris as CS is defined in a system header included by stdlib.h :

$ gegrep '[[:space:]]CS[[:space:]]' /usr/include/sys/regset.h
#define CS 15

I can see a new regset clean of this define is provided in include/llvm/Support/Solaris/sys/regset.h. How this header should be included ?

This header probably isn't intended to be included.

I't referred only in llvm/CMakeLists.txt:
   # special hack for Solaris to handle crazy system sys/regset.h
   include_directories("${LLVM_MAIN_INCLUDE_DIR}/llvm/Support/Solaris")

And it's guarded by LLVM_SUPPORT_SOLARIS_SYS_REGSET_H.