60 lines
2.6 KiB
CMake
60 lines
2.6 KiB
CMake
# Copyright (c) .NET Foundation and contributors. All rights reserved.
|
|
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
|
|
if(WIN32)
|
|
add_definitions(-DWIN32)
|
|
add_definitions(-D_WIN32=1)
|
|
if(IS_64BIT_BUILD)
|
|
add_definitions(-D_WIN64=1)
|
|
endif()
|
|
add_compile_options($<$<CONFIG:Debug>:-DDEBUG>)
|
|
add_compile_options($<$<CONFIG:Debug>:/Od>)
|
|
add_compile_options(/DEBUG)
|
|
add_compile_options(/GS)
|
|
add_compile_options(/W1)
|
|
add_compile_options(/Zc:inline)
|
|
add_compile_options(/fp:precise)
|
|
add_compile_options(/EHsc)
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEBUG")
|
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /INCREMENTAL:NO")
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG /PDBCOMPRESS")
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1572864")
|
|
|
|
# Debug build specific flags
|
|
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "/NOVCFEATURE")
|
|
|
|
# Release build specific flags
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
|
|
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
|
|
|
|
# RelWithDebInfo specific flags
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO} /DEBUG /OPT:REF /OPT:ICF")
|
|
set(CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO} /DEBUG /OPT:REF /OPT:ICF")
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /DEBUG /OPT:REF /OPT:ICF")
|
|
else()
|
|
add_compile_options(-Wno-unused-local-typedef)
|
|
endif()
|
|
|
|
# This is required to map a symbol reference to a matching definition local to the module (.so)
|
|
# containing the reference instead of using definitions from other modules.
|
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic -Bsymbolic-functions")
|
|
endif()
|
|
|
|
if(CLI_CMAKE_PLATFORM_ARCH_I386)
|
|
add_definitions(-D_TARGET_X86_=1)
|
|
elseif(CLI_CMAKE_PLATFORM_ARCH_AMD64)
|
|
add_definitions(-D_TARGET_AMD64_=1)
|
|
elseif(CLI_CMAKE_PLATFORM_ARCH_ARM)
|
|
add_definitions(-D_TARGET_ARM_=1)
|
|
else()
|
|
message(FATAL_ERROR "Unknown target architecture")
|
|
endif()
|
|
|
|
if(${CLI_CMAKE_RUNTIME_ID} STREQUAL "")
|
|
message(FATAL_ERROR "Runtime ID not specified")
|
|
else()
|
|
add_definitions(-DTARGET_RUNTIME_ID="${CLI_CMAKE_RUNTIME_ID}")
|
|
endif()
|