aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorambrosin <ambrosin@google.com>2023-07-10 07:24:50 -0700
committerCopybara-Service <copybara-worker@google.com>2023-07-10 07:27:17 -0700
commita48b971312f64953f1b07b7ad7326959cd70c662 (patch)
tree8b164384ac1c9adbbada55d51dfd6dd59515852b /cmake
parenta078fcd86a7082f9d12a3ba90b92a9e70d704859 (diff)
downloadtink-a48b971312f64953f1b07b7ad7326959cd70c662.tar.gz
Use the /bigobj copt when building for MSVC.
This is needed for template-heavy code [1], and it is added by default by Bazel [2]. [1] https://learn.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/fatal-error-c1128?view=msvc-170 [2] https://github.com/bazelbuild/bazel/blob/726b1007c9cc843cf65e2e4289a61c5ee346d5e1/tools/cpp/windows_cc_toolchain_config.bzl#L667 PiperOrigin-RevId: 546865338
Diffstat (limited to 'cmake')
-rw-r--r--cmake/TinkBuildRules.cmake8
1 files changed, 8 insertions, 0 deletions
diff --git a/cmake/TinkBuildRules.cmake b/cmake/TinkBuildRules.cmake
index 9fd43283a..58bcc2570 100644
--- a/cmake/TinkBuildRules.cmake
+++ b/cmake/TinkBuildRules.cmake
@@ -49,6 +49,13 @@ if (NOT DEFINED TINK_CXX_STANDARD)
endif()
endif()
+set(TINK_DEFAULT_COPTS "")
+if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
+ # This is required to avoid error C1128.
+ # See https://learn.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/fatal-error-c1128?view=msvc-170.
+ set(TINK_DEFAULT_COPTS "/bigobj")
+endif()
+
list(APPEND TINK_INCLUDE_DIRS "${TINK_GENFILE_DIR}")
set(TINK_IDE_FOLDER "Tink")
@@ -146,6 +153,7 @@ function(tink_cc_library)
target_sources(${_target_name} PRIVATE ${tink_cc_library_SRCS})
target_include_directories(${_target_name} PUBLIC ${TINK_INCLUDE_DIRS})
target_link_libraries(${_target_name} PUBLIC ${tink_cc_library_DEPS})
+ target_compile_options(${_target_name} PRIVATE ${TINK_DEFAULT_COPTS})
set_property(TARGET ${_target_name} PROPERTY CXX_STANDARD ${TINK_CXX_STANDARD})
set_property(TARGET ${_target_name} PROPERTY CXX_STANDARD_REQUIRED true)
if (tink_cc_library_PUBLIC)