|
@@ -254,29 +254,64 @@ else()
|
|
|
endif()
|
|
endif()
|
|
|
endif()
|
|
endif()
|
|
|
|
|
|
|
|
-option(ENABLE_TRACY_PROFILING "Enable profiling with Tracy. Source files can be placed in Dependencies/tracy." OFF)
|
|
|
|
|
-if( ENABLE_TRACY_PROFILING )
|
|
|
|
|
- find_package(Tracy REQUIRED)
|
|
|
|
|
|
|
+function(EnableConfigurationType name enable)
|
|
|
|
|
+ if(enable)
|
|
|
|
|
+ list(APPEND CMAKE_CONFIGURATION_TYPES "${name}")
|
|
|
|
|
+ list(REMOVE_DUPLICATES CMAKE_CONFIGURATION_TYPES)
|
|
|
|
|
+ else()
|
|
|
|
|
+ list(REMOVE_ITEM CMAKE_CONFIGURATION_TYPES "${name}")
|
|
|
|
|
+ endif()
|
|
|
|
|
+ set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING "List of configurations to enable" FORCE)
|
|
|
|
|
+endfunction()
|
|
|
|
|
|
|
|
- include_directories(${TRACY_INCLUDE_DIR})
|
|
|
|
|
|
|
+option(RMLUI_TRACY_PROFILING "Enable profiling with Tracy. Source files can be placed in Dependencies/tracy." OFF)
|
|
|
|
|
+if( RMLUI_TRACY_PROFILING )
|
|
|
|
|
+ option(RMLUI_TRACY_MEMORY_PROFILING "Overload global operator new/delete to track memory allocations in Tracy." ON)
|
|
|
|
|
|
|
|
if( CMAKE_CONFIGURATION_TYPES )
|
|
if( CMAKE_CONFIGURATION_TYPES )
|
|
|
- list(APPEND CMAKE_CONFIGURATION_TYPES Tracy)
|
|
|
|
|
- list(REMOVE_DUPLICATES CMAKE_CONFIGURATION_TYPES)
|
|
|
|
|
- set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING
|
|
|
|
|
- "Add the configurations that we need"
|
|
|
|
|
- FORCE)
|
|
|
|
|
- set(CMAKE_C_FLAGS_TRACY "${CMAKE_CXX_FLAGS_RELEASE} -DRMLUI_ENABLE_PROFILING")
|
|
|
|
|
- set(CMAKE_CXX_FLAGS_TRACY "${CMAKE_CXX_FLAGS_RELEASE} -DRMLUI_ENABLE_PROFILING")
|
|
|
|
|
- set(CMAKE_EXE_LINKER_FLAGS_TRACY "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
|
|
|
|
|
- set(CMAKE_SHARED_LINKER_FLAGS_TRACY "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
|
|
|
|
|
|
|
+ option(RMLUI_TRACY_CONFIGURATION "Enable a separate Tracy configuration type for multi-config generators such as Visual Studio, otherwise enable Tracy in all configurations." ON)
|
|
|
|
|
+
|
|
|
|
|
+ if( RMLUI_TRACY_CONFIGURATION )
|
|
|
|
|
+ EnableConfigurationType(Tracy ON)
|
|
|
|
|
+ list(APPEND CMAKE_MAP_IMPORTED_CONFIG_TRACY Release)
|
|
|
|
|
+ set(CMAKE_C_FLAGS_TRACY "${CMAKE_C_FLAGS_RELEASE}")
|
|
|
|
|
+ set(CMAKE_CXX_FLAGS_TRACY "${CMAKE_CXX_FLAGS_RELEASE}")
|
|
|
|
|
+ set(CMAKE_EXE_LINKER_FLAGS_TRACY "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
|
|
|
|
|
+ set(CMAKE_SHARED_LINKER_FLAGS_TRACY "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
|
|
|
|
|
+ else()
|
|
|
|
|
+ EnableConfigurationType(Tracy OFF)
|
|
|
|
|
+ endif()
|
|
|
|
|
+ endif()
|
|
|
|
|
+
|
|
|
|
|
+ if(NOT TARGET Tracy::TracyClient)
|
|
|
|
|
+ find_package(Tracy QUIET)
|
|
|
|
|
+ endif()
|
|
|
|
|
+
|
|
|
|
|
+ if(NOT TARGET Tracy::TracyClient)
|
|
|
|
|
+ message("Trying to add Tracy from subdirectory 'Dependencies/tracy'.")
|
|
|
|
|
+ add_subdirectory("Dependencies/tracy")
|
|
|
|
|
+ endif()
|
|
|
|
|
+
|
|
|
|
|
+ if(NOT TARGET Tracy::TracyClient)
|
|
|
|
|
+ message(FATAL_ERROR "Tracy client not found. Either (a) make sure target Tracy::TracyClient is available from parent project,"
|
|
|
|
|
+ "(b) Tracy can be found as a config package, or (c) Tracy source files are located in 'Dependencies/Tracy'.")
|
|
|
|
|
+ endif()
|
|
|
|
|
+
|
|
|
|
|
+ if( CMAKE_CONFIGURATION_TYPES AND RMLUI_TRACY_CONFIGURATION )
|
|
|
message("-- Tracy profiling enabled in configuration 'Tracy'.")
|
|
message("-- Tracy profiling enabled in configuration 'Tracy'.")
|
|
|
|
|
+ set(RMLUI_TRACY_CONDITION "$<CONFIG:Tracy>")
|
|
|
else()
|
|
else()
|
|
|
message("-- Tracy profiling enabled.")
|
|
message("-- Tracy profiling enabled.")
|
|
|
- list(APPEND CORE_PUBLIC_DEFS -DRMLUI_ENABLE_PROFILING)
|
|
|
|
|
|
|
+ set(RMLUI_TRACY_CONDITION "1")
|
|
|
|
|
+ endif()
|
|
|
|
|
+
|
|
|
|
|
+ list(APPEND CORE_PUBLIC_LINK_LIBS "$<${RMLUI_TRACY_CONDITION}:Tracy::TracyClient>")
|
|
|
|
|
+ list(APPEND CORE_PUBLIC_DEFS "$<${RMLUI_TRACY_CONDITION}:RMLUI_TRACY_PROFILING>")
|
|
|
|
|
+ if(RMLUI_TRACY_MEMORY_PROFILING)
|
|
|
|
|
+ list(APPEND CORE_PRIVATE_DEFS "$<${RMLUI_TRACY_CONDITION}:RMLUI_TRACY_MEMORY_PROFILING>")
|
|
|
endif()
|
|
endif()
|
|
|
elseif( CMAKE_CONFIGURATION_TYPES )
|
|
elseif( CMAKE_CONFIGURATION_TYPES )
|
|
|
- list(REMOVE_ITEM CMAKE_CONFIGURATION_TYPES Tracy)
|
|
|
|
|
|
|
+ EnableConfigurationType(Tracy OFF)
|
|
|
endif()
|
|
endif()
|
|
|
|
|
|
|
|
option(ENABLE_LOTTIE_PLUGIN "Enable plugin for Lottie animations. Requires the rlottie library." OFF)
|
|
option(ENABLE_LOTTIE_PLUGIN "Enable plugin for Lottie animations. Requires the rlottie library." OFF)
|
|
@@ -600,12 +635,14 @@ if(NOT BUILD_FRAMEWORK)
|
|
|
target_include_directories(RmlCore PRIVATE ${CORE_INCLUDE_DIRS})
|
|
target_include_directories(RmlCore PRIVATE ${CORE_INCLUDE_DIRS})
|
|
|
target_include_directories(RmlCore INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Include> $<INSTALL_INTERFACE:include>)
|
|
target_include_directories(RmlCore INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Include> $<INSTALL_INTERFACE:include>)
|
|
|
target_link_libraries(RmlCore PRIVATE ${CORE_LINK_LIBS})
|
|
target_link_libraries(RmlCore PRIVATE ${CORE_LINK_LIBS})
|
|
|
|
|
+ target_link_libraries(RmlCore PUBLIC ${CORE_PUBLIC_LINK_LIBS})
|
|
|
target_link_libraries(RmlDebugger RmlCore)
|
|
target_link_libraries(RmlDebugger RmlCore)
|
|
|
target_compile_definitions(RmlCore PRIVATE ${CORE_PRIVATE_DEFS})
|
|
target_compile_definitions(RmlCore PRIVATE ${CORE_PRIVATE_DEFS})
|
|
|
target_compile_definitions(RmlCore PUBLIC ${CORE_PUBLIC_DEFS})
|
|
target_compile_definitions(RmlCore PUBLIC ${CORE_PUBLIC_DEFS})
|
|
|
else()
|
|
else()
|
|
|
target_include_directories(RmlUi PRIVATE ${CORE_INCLUDE_DIRS})
|
|
target_include_directories(RmlUi PRIVATE ${CORE_INCLUDE_DIRS})
|
|
|
target_link_libraries(RmlUi PRIVATE ${CORE_LINK_LIBS})
|
|
target_link_libraries(RmlUi PRIVATE ${CORE_LINK_LIBS})
|
|
|
|
|
+ target_link_libraries(RmlUi PUBLIC ${CORE_PUBLIC_LINK_LIBS})
|
|
|
target_compile_definitions(RmlUi PRIVATE ${CORE_PRIVATE_DEFS})
|
|
target_compile_definitions(RmlUi PRIVATE ${CORE_PRIVATE_DEFS})
|
|
|
target_compile_definitions(RmlUi PUBLIC ${CORE_PUBLIC_DEFS})
|
|
target_compile_definitions(RmlUi PUBLIC ${CORE_PUBLIC_DEFS})
|
|
|
endif()
|
|
endif()
|