Do you think it's worth also checking for the presence of cxxabi.h and
assuming the Itanium ABI if it's found, since the MS ABI shouldn't be using
any ABI library?

(_LIBCPP_BUILDING_HAS_NO_ABI_LIBRARY would have been ideal were it available
persistently rather than only during the build of libc++ itself. It could
still work if this macro isn't used in any headers though.)

Also, is there ever a case where _MSC_VER would be defined and _WIN32
wouldn't? The current check seems slightly redundant.

On 1/6/17, 6:43 PM, "cfe-commits on behalf of Eric Fiselier via cfe-commits" 
<cfe-commits-boun...@lists.llvm.org on behalf of cfe-commits@lists.llvm.org> 
wrote:

    Author: ericwf
    Date: Fri Jan  6 20:43:58 2017
    New Revision: 291329
    
    URL: 
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D291329-26view-3Drev&d=DgIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=vt8N_ZR6syyL2-CBgE_SBSS0YTQdKIMfcLf4r8leu2c&s=fVFRdDSSgXSZHuGlbfQI1SHyPLDGvuVdhQdxOsU30hI&e=
 
    Log:
    Add _LIBCPP_ABI_[ITANIUM|MICROSOFT] macros.
    
    This patch adds a libc++ configuration macro for the ABI we
    are targeting, either Itanium or Microsoft. For now we configure
    for the Microsoft ABI when on Windows with a compiler that defines
    _MSC_VER. However this is only temporary until Clang implements
    builtin macros we can use.
    
    Modified:
        libcxx/trunk/include/__config
    
    Modified: libcxx/trunk/include/__config
    URL: 
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_libcxx_trunk_include_-5F-5Fconfig-3Frev-3D291329-26r1-3D291328-26r2-3D291329-26view-3Ddiff&d=DgIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=vt8N_ZR6syyL2-CBgE_SBSS0YTQdKIMfcLf4r8leu2c&s=46ge62wLL0LHhhQmWVsvb0uPoh8oV44DG0fsq0nEPs8&e=
 
    
==============================================================================
    --- libcxx/trunk/include/__config (original)
    +++ libcxx/trunk/include/__config Fri Jan  6 20:43:58 2017
    @@ -111,6 +111,15 @@
     #define _LIBCPP_COMPILER_IBM
     #endif
     
    +// FIXME: ABI detection should be done via compiler builtin macros. This
    +// is just a placeholder until Clang implements such macros. For now assume
    +// that Windows compilers pretending to be MSVC++ target the microsoft ABI.
    +#if defined(_WIN32) && defined(_MSC_VER)
    +# define _LIBCPP_ABI_MICROSOFT
    +#else
    +# define _LIBCPP_ABI_ITANIUM
    +#endif
    +
     // Need to detect which libc we're using if we're on Linux.
     #if defined(__linux__)
     #include <features.h>
    
    
    _______________________________________________
    cfe-commits mailing list
    cfe-commits@lists.llvm.org
    
https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Dcommits&d=DgIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=vt8N_ZR6syyL2-CBgE_SBSS0YTQdKIMfcLf4r8leu2c&s=rzONjyM9TBpTpA9aQpIA9LFsaiofSZIYff34ZiNb5cA&e=
 
    

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to