#------------------------------------------------------------------------------------------------------- # Copyright (C) Microsoft. All rights reserved. # Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. #------------------------------------------------------------------------------------------------------- include(CheckCXXSourceCompiles) include(CheckCXXSourceRuns) if(CMAKE_SYSTEM_NAME STREQUAL Darwin) # by default this is disabled for osx # enable temporarily set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \ -Werror" ) endif() check_cxx_source_runs(" #include #include __attribute__((disable_tail_calls)) int inc(int a) { return a + 1; } int main(int argc, char **argv) { printf(\"%d\", inc(argc + 1)); exit(0); }" CLANG_HAS_DISABLE_TAIL_CALLS_CFG) if(CLANG_HAS_DISABLE_TAIL_CALLS_CFG STREQUAL 1) add_definitions(-DCLANG_HAS_DISABLE_TAIL_CALLS=1) set(CXX_DO_NOT_OPTIMIZE_SIBLING_CALLS "") else() set(CXX_DO_NOT_OPTIMIZE_SIBLING_CALLS "-fno-optimize-sibling-calls") endif() if(CMAKE_SYSTEM_NAME STREQUAL Darwin) # by default this is disabled for osx # disable back set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \ -Wno-error" ) endif()