Use correct compiler flags in MSVC bootstrap builds of Zig

https://github.com/ziglang/zig/issues/4877

The CMake build of Zig from C++ uses hand-set compiler flags which are
not compatible with the Microsoft C/C++ Optimizing Compiler (cl.exe)
used by Visual Studio.

This commit attempts to conform them to match the Clang/GCC options
under MSVC builds.

Note that CL does not have a concept of C99 or "-O3", and may imply
other optimizations in "/O2" than are implied by Clang/GCC "-O3".

Visual Studio 2019 documentation for cl.exe's optimization options:
https://docs.microsoft.com/en-us/cpp/build/reference/o-options-optimize-code?view=vs-2019

Visual Studio 2019 doc for cl.exe's C++ standard options:
https://docs.microsoft.com/en-us/cpp/build/reference/std-specify-language-standard-version?view=vs-2019
master
Bodie Solomon 2020-03-31 10:13:31 -04:00 committed by Andrew Kelley
parent d34a3c66b3
commit 9bb76f8ce0
1 changed files with 12 additions and 3 deletions

View File

@ -224,7 +224,7 @@ set(EMBEDDED_SOFTFLOAT_SOURCES
add_library(embedded_softfloat STATIC ${EMBEDDED_SOFTFLOAT_SOURCES})
if(MSVC)
set_target_properties(embedded_softfloat PROPERTIES
COMPILE_FLAGS "-std=c99 /w"
COMPILE_FLAGS "/w /O2"
)
else()
set_target_properties(embedded_softfloat PROPERTIES
@ -315,7 +315,12 @@ include_directories(
)
# These have to go before the -Wno- flags
set(EXE_CFLAGS "-std=c++14")
if(MSVC)
set(EXE_CFLAGS "/std:c++14")
else(MSVC)
set(EXE_CFLAGS "-std=c++14")
endif(MSVC)
if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
if(MSVC)
set(EXE_CFLAGS "${EXE_CFLAGS} /w")
@ -333,7 +338,11 @@ else()
endif()
endif()
set(OPTIMIZED_C_FLAGS "-std=c99 -O3")
if(MSVC)
set(OPTIMIZED_C_FLAGS "/O2")
else(MSVC)
set(OPTIMIZED_C_FLAGS "-std=c99 -O3")
endif(MSVC)
set(EXE_LDFLAGS " ")
if(MSVC)