Skip to content

Commit

Permalink
Add sampling profiler build option (#411)
Browse files Browse the repository at this point in the history
  • Loading branch information
marcauberer committed Jan 3, 2024
1 parent 1e0a48b commit ba995e6
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions Options.cmake
Expand Up @@ -13,6 +13,7 @@ option(SPICE_LTO "Enable link time optimization (LTO) for the compiler executabl
if (SPICE_LTO)
message(STATUS "Spice: LTO for Spice is enabled.")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -flto")
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -flto")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto")
else()
message(STATUS "Spice: LTO for Spice is disabled.")
Expand All @@ -23,11 +24,23 @@ option(SPICE_DEV_COMPILE "Developer-only option" OFF)
if(SPICE_DEV_COMPILE)
message(STATUS "Spice: Dev build for Spice is enabled.")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fuse-ld=lld -ffunction-sections -fdata-sections")
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -fuse-ld=lld -ffunction-sections -fdata-sections")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections")
else()
message(STATUS "Spice: Dev build for Spice is disabled.")
endif()

# Profiler build option (for sampling profilers like perf)
option(SPICE_PROF_COMPILE "Profiler build for Spice" OFF)
if(SPICE_PROF_COMPILE)
message(STATUS "Spice: Profiler build for Spice is enabled.")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -O0")
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -fno-omit-frame-pointer -O0")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -O0")
else()
message(STATUS "Spice: Profiler build for Spice is disabled.")
endif()

# Link statically
option(SPICE_LINK_STATIC "Link the compiler executable statically" OFF)
if (SPICE_LINK_STATIC)
Expand All @@ -53,6 +66,8 @@ option(SPICE_RUN_ASAN "Run address sanitizer on executable" OFF)
if (SPICE_RUN_ASAN)
message(STATUS "Spice: Address sanitizer enabled.")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address")
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -fsanitize=address")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fsanitize=address")
else()
message(STATUS "Spice: Address sanitizer disabled.")
endif()
Expand Down

0 comments on commit ba995e6

Please sign in to comment.