# Copyright (c) Meta Platforms, Inc. and affiliates. # # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_VISIBILITY_PRESET hidden) set(CMAKE_POSITION_INDEPENDENT_CODE ON) add_compile_definitions($<$:DEBUG>) if(MSVC) add_compile_options( # Don't omit frame pointers (e.g. for crash dumps) /Oy- # "Standard C++ exception handling" (C++ stack unwinding including extern c) /EHsc # Enable warnings and warnings as errors /W4 /WX # Disable RTTI $<$:/GR-> # Use /O2 (Maximize Speed) $<$:/O2>) else() add_compile_options( # Don't omit frame pointers (e.g. for crash dumps) -fno-omit-frame-pointer # Enable exception handling -fexceptions # Enable warnings and warnings as errors -Wall -Werror # Disable RTTI $<$:-fno-rtti> # Use -O2 (prioritize speed) $<$:-O2> # Enable separate sections per function/data item $<$:-ffunction-sections> $<$:-fdata-sections>) add_link_options( # Discard unused sections $<$:$<$:-Wl,--gc-sections>> $<$:$<$:-Wl,-dead_strip>>) endif()