[llvm] r306002 - [Solaris] replace Solaris.h hack with a set of better hacks

via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 22 12:51:40 PDT 2017


Hi Kamil,

I think this commit breaks the modules build.

I’m getting:

FAILED: lib/Support/CMakeFiles/LLVMSupport.dir/ARMBuildAttrs.cpp.o 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++   -DGTEST_HAS_RTTI=0 -DLLVM_BUILD_GLOBAL_ISEL -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib/Support -I/Users/vk/src/llvm.org-master/llvm/lib/Support -Iinclude -I/Users/vk/src/llvm.org-master/llvm/include -fPIC -fvisibility-inlines-hidden -Werror=date-time -std=c++11 -fmodules -fmodules-cache-path=/Volumes/Builds/llvm.org-master-R/module.cache -fcxx-modules -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -fcolor-diagnostics -O3 -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk    -fno-exceptions -fno-rtti -MD -MT lib/Support/CMakeFiles/LLVMSupport.dir/ARMBuildAttrs.cpp.o -MF lib/Support/CMakeFiles/LLVMSupport.dir/ARMBuildAttrs.cpp.o.d -o lib/Support/CMakeFiles/LLVMSupport.dir/ARMBuildAttrs.cpp.o -c /Users/vk/src/llvm.org-master/llvm/lib/Support/ARMBuildAttrs.cpp
While building module 'LLVM_Utils' imported from /Users/vk/src/llvm.org-master/llvm/lib/Support/ARMBuildAttrs.cpp:10:
In file included from <module-includes>:176:
/Users/vk/src/llvm.org-master/llvm/include/llvm/Support/Solaris/sys/regset.h:17:2: warning: #include_next is a language extension [-Wgnu-include-next]
#include_next <sys/regset.h>
 ^
/Users/vk/src/llvm.org-master/llvm/include/llvm/Support/Solaris/sys/regset.h:17:15: fatal error: 'sys/regset.h' file not found
#include_next <sys/regset.h>
              ^~~~~~~~~~~~~~
/Users/vk/src/llvm.org-master/llvm/lib/Support/ARMBuildAttrs.cpp:10:10: fatal error: could not build module 'LLVM_Utils'
#include "llvm/ADT/StringRef.h"
 ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
1 warning and 2 errors generated.

Reproducer:

$ cmake -G Ninja \
    -DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64" \
    -DCMAKE_BUILD_TYPE:STRING=Release \
    -DLLVM_ENABLE_ASSERTIONS:BOOL=Off \
    -DLLVM_INCLUDE_TESTS:BOOL=On \
    -DLLVM_ENABLE_MODULES=On \
    ~/src/llvm.org-master/llvm

vedant

> On Jun 22, 2017, at 6:18 AM, Kamil Rytarowski via llvm-commits <llvm-commits at lists.llvm.org> wrote:
> 
> Author: kamil
> Date: Thu Jun 22 08:18:46 2017
> New Revision: 306002
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=306002&view=rev
> Log:
> [Solaris] replace Solaris.h hack with a set of better hacks
> 
> Summary:
> Got rid of unwieldy -include Solaris.h portability solution, replacing it with interposed header and moving endian defines into Host.h.
> 
> Fixes PR28370.
> 
> Reviewers: joerg, alekseyshl, mgorny
> 
> Reviewed By: joerg
> 
> Subscribers: llvm-commits, mgorny, ro, krytarowski
> 
> Patch by Fedor Sergeev.
> 
> Differential Revision: https://reviews.llvm.org/D3413
> 
> Added:
>    llvm/trunk/include/llvm/Support/Solaris/
>    llvm/trunk/include/llvm/Support/Solaris/sys/
>    llvm/trunk/include/llvm/Support/Solaris/sys/regset.h
>      - copied, changed from r306001, llvm/trunk/include/llvm/Support/Solaris.h
> Removed:
>    llvm/trunk/include/llvm/Support/Solaris.h
> Modified:
>    llvm/trunk/CMakeLists.txt
>    llvm/trunk/include/llvm/Support/Host.h
>    llvm/trunk/include/llvm/module.modulemap
> 
> Modified: llvm/trunk/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/CMakeLists.txt?rev=306002&r1=306001&r2=306002&view=diff
> ==============================================================================
> --- llvm/trunk/CMakeLists.txt (original)
> +++ llvm/trunk/CMakeLists.txt Thu Jun 22 08:18:46 2017
> @@ -804,7 +804,8 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBS
> endif(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")
> 
> if( ${CMAKE_SYSTEM_NAME} MATCHES SunOS )
> -   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include llvm/Support/Solaris.h")
> +   # special hack for Solaris to handle crazy system sys/regset.h
> +   include_directories("${LLVM_MAIN_INCLUDE_DIR}/llvm/Support/Solaris")
> endif( ${CMAKE_SYSTEM_NAME} MATCHES SunOS )
> 
> # Make sure we don't get -rdynamic in every binary. For those that need it,
> 
> Modified: llvm/trunk/include/llvm/Support/Host.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Host.h?rev=306002&r1=306001&r2=306002&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/Host.h (original)
> +++ llvm/trunk/include/llvm/Support/Host.h Thu Jun 22 08:18:46 2017
> @@ -21,6 +21,16 @@
> #include <endian.h>
> #elif defined(_AIX)
> #include <sys/machine.h>
> +#elif defined(__sun)
> +/* Solaris provides _BIG_ENDIAN/_LITTLE_ENDIAN selector in sys/types.h */
> +#include <sys/types.h>
> +#define BIG_ENDIAN 4321
> +#define LITTLE_ENDIAN 1234
> +#if defined(_BIG_ENDIAN)
> +#define BYTE_ORDER BIG_ENDIAN
> +#else
> +#define BYTE_ORDER LITTLE_ENDIAN
> +#endif
> #else
> #if !defined(BYTE_ORDER) && !defined(LLVM_ON_WIN32)
> #include <machine/endian.h>
> 
> Removed: llvm/trunk/include/llvm/Support/Solaris.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Solaris.h?rev=306001&view=auto
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/Solaris.h (original)
> +++ llvm/trunk/include/llvm/Support/Solaris.h (removed)
> @@ -1,49 +0,0 @@
> -/*===- llvm/Support/Solaris.h ------------------------------------*- C++ -*-===*
> - *
> - *                     The LLVM Compiler Infrastructure
> - *
> - * This file is distributed under the University of Illinois Open Source
> - * License. See LICENSE.TXT for details.
> - *
> - *===----------------------------------------------------------------------===*
> - *
> - * This file contains portability fixes for Solaris hosts.
> - *
> - *===----------------------------------------------------------------------===*/
> -
> -#ifndef LLVM_SUPPORT_SOLARIS_H
> -#define LLVM_SUPPORT_SOLARIS_H
> -
> -#include <sys/regset.h>
> -#include <sys/types.h>
> -
> -/* Solaris doesn't have endian.h. SPARC is the only supported big-endian ISA. */
> -#define BIG_ENDIAN 4321
> -#define LITTLE_ENDIAN 1234
> -#if defined(__sparc) || defined(__sparc__)
> -#define BYTE_ORDER BIG_ENDIAN
> -#else
> -#define BYTE_ORDER LITTLE_ENDIAN
> -#endif
> -
> -#undef CS
> -#undef DS
> -#undef ES
> -#undef FS
> -#undef GS
> -#undef SS
> -#undef EAX
> -#undef ECX
> -#undef EDX
> -#undef EBX
> -#undef ESP
> -#undef EBP
> -#undef ESI
> -#undef EDI
> -#undef EIP
> -#undef UESP
> -#undef EFL
> -#undef ERR
> -#undef TRAPNO
> -
> -#endif
> 
> Copied: llvm/trunk/include/llvm/Support/Solaris/sys/regset.h (from r306001, llvm/trunk/include/llvm/Support/Solaris.h)
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Solaris/sys/regset.h?p2=llvm/trunk/include/llvm/Support/Solaris/sys/regset.h&p1=llvm/trunk/include/llvm/Support/Solaris.h&r1=306001&r2=306002&rev=306002&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/Solaris.h (original)
> +++ llvm/trunk/include/llvm/Support/Solaris/sys/regset.h Thu Jun 22 08:18:46 2017
> @@ -1,4 +1,4 @@
> -/*===- llvm/Support/Solaris.h ------------------------------------*- C++ -*-===*
> +/*===- llvm/Support/Solaris/sys/regset.h ------------------------*- C++ -*-===*
>  *
>  *                     The LLVM Compiler Infrastructure
>  *
> @@ -7,24 +7,14 @@
>  *
>  *===----------------------------------------------------------------------===*
>  *
> - * This file contains portability fixes for Solaris hosts.
> + * This file works around excessive name space pollution from the system header
> + * on Solaris hosts.
>  *
>  *===----------------------------------------------------------------------===*/
> 
> -#ifndef LLVM_SUPPORT_SOLARIS_H
> -#define LLVM_SUPPORT_SOLARIS_H
> +#ifndef LLVM_SUPPORT_SOLARIS_SYS_REGSET_H
> 
> -#include <sys/regset.h>
> -#include <sys/types.h>
> -
> -/* Solaris doesn't have endian.h. SPARC is the only supported big-endian ISA. */
> -#define BIG_ENDIAN 4321
> -#define LITTLE_ENDIAN 1234
> -#if defined(__sparc) || defined(__sparc__)
> -#define BYTE_ORDER BIG_ENDIAN
> -#else
> -#define BYTE_ORDER LITTLE_ENDIAN
> -#endif
> +#include_next <sys/regset.h>
> 
> #undef CS
> #undef DS
> 
> Modified: llvm/trunk/include/llvm/module.modulemap
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/module.modulemap?rev=306002&r1=306001&r2=306002&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/module.modulemap (original)
> +++ llvm/trunk/include/llvm/module.modulemap Thu Jun 22 08:18:46 2017
> @@ -275,9 +275,6 @@ module LLVM_Utils {
>     umbrella "Support"
>     module * { export * }
> 
> -    // Exclude this; it's only included on Solaris.
> -    exclude header "Support/Solaris.h"
> -
>     // Exclude this; it's fundamentally non-modular.
>     exclude header "Support/PluginLoader.h"
> 
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170622/93093f3b/attachment.html>


More information about the llvm-commits mailing list