mirror of
https://github.com/wolfpld/tracy
synced 2025-05-03 14:03:52 +00:00
Add Link-Time optimization option
This commit is contained in:
parent
2608c6bbc9
commit
7c48baf132
@ -15,17 +15,30 @@ endif()
|
|||||||
|
|
||||||
option(TRACY_STATIC "Whether to build Tracy as a static library" ${DEFAULT_STATIC})
|
option(TRACY_STATIC "Whether to build Tracy as a static library" ${DEFAULT_STATIC})
|
||||||
option(TRACY_Fortran "Build Fortran bindings" OFF)
|
option(TRACY_Fortran "Build Fortran bindings" OFF)
|
||||||
|
option(TRACY_LTO "Enable Link-Time optimization" OFF)
|
||||||
|
|
||||||
if(TRACY_Fortran)
|
if(TRACY_Fortran)
|
||||||
enable_language(Fortran)
|
enable_language(Fortran)
|
||||||
set(CMAKE_Fortran_VERSION 2003)
|
set(CMAKE_Fortran_VERSION 2003)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(TRACY_LTO)
|
||||||
|
include(CheckIPOSupported)
|
||||||
|
check_ipo_supported(RESULT LTO_SUPPORTED)
|
||||||
|
if(NOT LTO_SUPPORTED)
|
||||||
|
message(WARNING "LTO is not supported!")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
set(LTO_SUPPORTED OFF)
|
||||||
|
endif()
|
||||||
|
|
||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
|
|
||||||
set(TRACY_PUBLIC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/public)
|
set(TRACY_PUBLIC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/public)
|
||||||
|
|
||||||
if(TRACY_STATIC)
|
if(LTO_SUPPORTED)
|
||||||
|
set(TRACY_VISIBILITY "OBJECT")
|
||||||
|
elseif(TRACY_STATIC)
|
||||||
set(TRACY_VISIBILITY "STATIC")
|
set(TRACY_VISIBILITY "STATIC")
|
||||||
else()
|
else()
|
||||||
set(TRACY_VISIBILITY "SHARED")
|
set(TRACY_VISIBILITY "SHARED")
|
||||||
@ -33,6 +46,7 @@ endif()
|
|||||||
|
|
||||||
add_library(TracyClient ${TRACY_VISIBILITY} "${TRACY_PUBLIC_DIR}/TracyClient.cpp")
|
add_library(TracyClient ${TRACY_VISIBILITY} "${TRACY_PUBLIC_DIR}/TracyClient.cpp")
|
||||||
target_compile_features(TracyClient PUBLIC cxx_std_11)
|
target_compile_features(TracyClient PUBLIC cxx_std_11)
|
||||||
|
set_target_properties(TracyClient PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${LTO_SUPPORTED})
|
||||||
target_include_directories(TracyClient SYSTEM PUBLIC
|
target_include_directories(TracyClient SYSTEM PUBLIC
|
||||||
$<BUILD_INTERFACE:${TRACY_PUBLIC_DIR}>
|
$<BUILD_INTERFACE:${TRACY_PUBLIC_DIR}>
|
||||||
$<INSTALL_INTERFACE:include>)
|
$<INSTALL_INTERFACE:include>)
|
||||||
@ -53,7 +67,8 @@ if(TRACY_Fortran)
|
|||||||
PUBLIC
|
PUBLIC
|
||||||
TracyClient
|
TracyClient
|
||||||
)
|
)
|
||||||
set_target_properties(TracyClientF90 PROPERTIES Fortran_MODULE_DIRECTORY ${PROJECT_BINARY_DIR})
|
set_target_properties(TracyClientF90 PROPERTIES Fortran_MODULE_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||||
|
INTERPROCEDURAL_OPTIMIZATION ${LTO_SUPPORTED})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Public dependency on some libraries required when using Mingw
|
# Public dependency on some libraries required when using Mingw
|
||||||
|
Loading…
x
Reference in New Issue
Block a user