mirror of
https://github.com/llvm-mirror/libcxx.git
synced 2025-10-23 10:07:41 +08:00
build: tweak macros for Windows build
Move the windows specific macro definitions for compiling c++ into the target. Add a number of newer options that are necessary to properly build libc++ for windows. This ensures that we do not accidentally autolink msvcprt (Microsoft's C++ runtime library), do not define linker pragmas which are msvcprt specific, and do not accidentally encode the incorrect version of the msvc compatibility version. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@290837 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -442,9 +442,6 @@ if (LIBCXX_ENABLE_ASSERTIONS)
|
|||||||
define_if_not(MSVC -D_DEBUG)
|
define_if_not(MSVC -D_DEBUG)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Feature flags ===============================================================
|
|
||||||
define_if(MSVC -D_CRT_SECURE_NO_WARNINGS)
|
|
||||||
|
|
||||||
# Modules flags ===============================================================
|
# Modules flags ===============================================================
|
||||||
# FIXME The libc++ sources are fundamentally non-modular. They need special
|
# FIXME The libc++ sources are fundamentally non-modular. They need special
|
||||||
# versions of the headers in order to provide C++03 and legacy ABI definitions.
|
# versions of the headers in order to provide C++03 and legacy ABI definitions.
|
||||||
|
@@ -161,6 +161,28 @@ split_list(LIBCXX_LINK_FLAGS)
|
|||||||
|
|
||||||
# Add a object library that contains the compiled source files.
|
# Add a object library that contains the compiled source files.
|
||||||
add_library(cxx_objects OBJECT ${exclude_from_all} ${LIBCXX_SOURCES} ${LIBCXX_HEADERS})
|
add_library(cxx_objects OBJECT ${exclude_from_all} ${LIBCXX_SOURCES} ${LIBCXX_HEADERS})
|
||||||
|
if(WIN32 AND NOT MINGW)
|
||||||
|
target_compile_definitions(cxx_objects
|
||||||
|
PRIVATE
|
||||||
|
# Ignore the -MSC_VER mismatch, as we may build
|
||||||
|
# with a different compatibility version.
|
||||||
|
_ALLOW_MSC_VER_MISMATCH
|
||||||
|
# Don't check the msvcprt iterator debug levels
|
||||||
|
# as we will define the iterator types; libc++
|
||||||
|
# uses a different macro to identify the debug
|
||||||
|
# level.
|
||||||
|
_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH
|
||||||
|
# We are building the c++ runtime, don't pull in
|
||||||
|
# msvcprt.
|
||||||
|
_CRTBLD
|
||||||
|
# Don't warn on the use of "deprecated"
|
||||||
|
# "insecure" functions which are standards
|
||||||
|
# specified.
|
||||||
|
_CRT_SECURE_NO_WARNINGS
|
||||||
|
# Use the ISO conforming behaviour for conversion
|
||||||
|
# in printf, scanf.
|
||||||
|
_CRT_STDIO_ISO_WIDE_SPECIFIERS)
|
||||||
|
endif()
|
||||||
|
|
||||||
set_target_properties(cxx_objects
|
set_target_properties(cxx_objects
|
||||||
PROPERTIES
|
PROPERTIES
|
||||||
|
Reference in New Issue
Block a user