CMake: Remove TINT_ENABLE_SHARED_CRT
And if tint is being built as a sub-project of another project, default to not building documentation or tests. See dawn-review.googlesource.com/c/dawn/+/43961. Change-Id: I1133511822efe3d1fc35675ed599de76914d1881 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/44045 Reviewed-by: Antonio Maiorano <amaiorano@google.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Ben Clayton <bclayton@google.com>
This commit is contained in:
parent
01df2a7cee
commit
6341fa5801
|
@ -26,7 +26,22 @@ if ("${CMAKE_BUILD_TYPE}" STREQUAL "")
|
|||
set(CMAKE_BUILD_TYPE "Debug")
|
||||
endif()
|
||||
|
||||
option(TINT_BUILD_DOCS "Build documentation" ON)
|
||||
# TINT_IS_SUBPROJECT is 1 if added via add_subdirectory() from another project.
|
||||
get_directory_property(TINT_IS_SUBPROJECT PARENT_DIRECTORY)
|
||||
if(TINT_IS_SUBPROJECT)
|
||||
set(TINT_IS_SUBPROJECT 1)
|
||||
|
||||
# If tint is used as a subproject, default to disabling the building of
|
||||
# documentation and tests. These are unlikely to be desirable, but can be
|
||||
# enabled.
|
||||
set(TINT_BUILD_DOCS_DEFAULT OFF)
|
||||
set(TINT_BUILD_TESTS_DEFAULT OFF)
|
||||
else()
|
||||
set(TINT_BUILD_DOCS_DEFAULT ON)
|
||||
set(TINT_BUILD_TESTS_DEFAULT ON)
|
||||
endif()
|
||||
|
||||
option(TINT_BUILD_DOCS "Build documentation" ${TINT_BUILD_DOCS_DEFAULT})
|
||||
option(TINT_BUILD_SPV_READER "Build the SPIR-V input reader" ON)
|
||||
option(TINT_BUILD_WGSL_READER "Build the WGSL input reader" ON)
|
||||
option(TINT_BUILD_HLSL_WRITER "Build the HLSL output writer" ON)
|
||||
|
@ -34,7 +49,7 @@ option(TINT_BUILD_MSL_WRITER "Build the MSL output writer" ON)
|
|||
option(TINT_BUILD_SPV_WRITER "Build the SPIR-V output writer" ON)
|
||||
option(TINT_BUILD_WGSL_WRITER "Build the WGSL output writer" ON)
|
||||
option(TINT_BUILD_FUZZERS "Build fuzzers" OFF)
|
||||
option(TINT_BUILD_TESTS "Build tests" ON)
|
||||
option(TINT_BUILD_TESTS "Build tests" ${TINT_BUILD_TESTS_DEFAULT})
|
||||
|
||||
option(TINT_ENABLE_MSAN "Enable memory sanitizer" OFF)
|
||||
option(TINT_ENABLE_ASAN "Enable address sanitizer" OFF)
|
||||
|
@ -44,14 +59,6 @@ option(TINT_EMIT_COVERAGE "Emit code coverage information" OFF)
|
|||
|
||||
option(TINT_CHECK_CHROMIUM_STYLE "Check for [chromium-style] issues during build" OFF)
|
||||
|
||||
if(WIN32)
|
||||
# On Windows, CMake by default compiles with the shared CRT.
|
||||
# Default it to the static CRT.
|
||||
option(TINT_ENABLE_SHARED_CRT
|
||||
"Tint: Use the shared CRT with MSVC instead of the static CRT"
|
||||
${TINT_ENABLE_SHARED_CRT})
|
||||
endif(WIN32)
|
||||
|
||||
message(STATUS "Tint build docs: ${TINT_BUILD_DOCS}")
|
||||
message(STATUS "Tint build SPIR-V reader: ${TINT_BUILD_SPV_READER}")
|
||||
message(STATUS "Tint build WGSL reader: ${TINT_BUILD_WGSL_READER}")
|
||||
|
@ -97,25 +104,6 @@ if(${TINT_BUILD_DOCS})
|
|||
endif(DOXYGEN_FOUND)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
# We don't want to have to copy the C Runtime DLL everywhere the executable
|
||||
# goes. So by default compile code to assume the CRT is statically linked,
|
||||
# i.e. use /MT* options. For debug builds use /MTd, and for release builds
|
||||
# use /MT. If TINT_ENABLE_SHARED_CRT is ON, then use the shared C runtime.
|
||||
# Modify the project-wide options variables. This is ugly, but seems to be
|
||||
# the state of the art.
|
||||
if(NOT ${TINT_ENABLE_SHARED_CRT})
|
||||
message(STATUS "Tint: Static C runtime selected: replacing /MD* with /MT*")
|
||||
foreach (flag_var
|
||||
CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
|
||||
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
|
||||
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
||||
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
||||
string(REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
|
||||
endforeach()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
function(tint_default_compile_options TARGET)
|
||||
target_include_directories(${TARGET} PUBLIC "${PROJECT_SOURCE_DIR}")
|
||||
target_include_directories(${TARGET} PUBLIC "${PROJECT_SOURCE_DIR}/include")
|
||||
|
@ -212,18 +200,6 @@ function(tint_default_compile_options TARGET)
|
|||
)
|
||||
endif()
|
||||
|
||||
if (NOT ${TINT_ENABLE_SHARED_CRT})
|
||||
# For MinGW cross compile, statically link to the C++ runtime.
|
||||
# But it still depends on MSVCRT.dll.
|
||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
|
||||
set_target_properties(${TARGET} PROPERTIES LINK_FLAGS
|
||||
-static
|
||||
-static-libgcc
|
||||
-static-libstdc++)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
add_subdirectory(third_party)
|
||||
|
|
Loading…
Reference in New Issue