You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1051 lines
26 KiB

include(Definitions)
include(functions/devilutionx_library)
include(functions/genex)
set(libdevilutionx_SRCS
appfat.cpp
automap.cpp
capture.cpp
cursor.cpp
dead.cpp
debug.cpp
diablo.cpp
diablo_msg.cpp
doom.cpp
gamemenu.cpp
gmenu.cpp
help.cpp
hwcursor.cpp
interfac.cpp
inv.cpp
loadsave.cpp
menu.cpp
minitext.cpp
missiles.cpp
movie.cpp
msg.cpp
nthread.cpp
pfile.cpp
plrmsg.cpp
portal.cpp
restrict.cpp
sync.cpp
tmsg.cpp
towners.cpp
track.cpp
control/control_chat.cpp
control/control_chat_commands.cpp
control/control_flasks.cpp
control/control_gold.cpp
control/control_infobox.cpp
control/control_panel.cpp
controls/axis_direction.cpp
controls/controller_motion.cpp
controls/controller.cpp
controls/devices/joystick.cpp
controls/devices/kbcontroller.cpp
controls/game_controls.cpp
controls/keymapper.cpp
controls/menu_controls.cpp
controls/modifier_hints.cpp
controls/plrctrls.cpp
4 years ago
DiabloUI/button.cpp
DiabloUI/credits.cpp
DiabloUI/credits_lines.cpp
DiabloUI/diabloui.cpp
DiabloUI/dialogs.cpp
DiabloUI/hero/selhero.cpp
4 years ago
DiabloUI/mainmenu.cpp
DiabloUI/multi/selconn.cpp
DiabloUI/multi/selgame.cpp
4 years ago
DiabloUI/progress.cpp
DiabloUI/scrollbar.cpp
DiabloUI/selok.cpp
DiabloUI/selstart.cpp
DiabloUI/selyesno.cpp
DiabloUI/settingsmenu.cpp
DiabloUI/support_lines.cpp
DiabloUI/title.cpp
DiabloUI/text_input.cpp
4 years ago
dvlnet/abstract_net.cpp
dvlnet/base.cpp
dvlnet/cdwrap.cpp
dvlnet/frame_queue.cpp
dvlnet/loopback.cpp
dvlnet/packet.cpp
engine/actor_position.cpp
engine/animationinfo.cpp
engine/backbuffer_state.cpp
engine/dx.cpp
engine/events.cpp
engine/palette.cpp
engine/sound_position.cpp
4 years ago
engine/trn.cpp
engine/render/automap_render.cpp
engine/render/scrollrt.cpp
items/validation.cpp
levels/reencode_dun_cels.cpp
levels/setmaps.cpp
levels/themes.cpp
levels/tile_properties.cpp
levels/town.cpp
levels/trigs.cpp
lua/autocomplete.cpp
lua/lua_event.cpp
lua/lua_global.cpp
lua/modules/audio.cpp
lua/modules/hellfire.cpp
lua/modules/dev.cpp
lua/modules/dev/display.cpp
lua/modules/dev/items.cpp
lua/modules/dev/level.cpp
lua/modules/dev/level/map.cpp
lua/modules/dev/level/warp.cpp
lua/modules/dev/monsters.cpp
lua/modules/dev/player.cpp
lua/modules/dev/player/gold.cpp
lua/modules/dev/player/spells.cpp
lua/modules/dev/player/stats.cpp
lua/modules/dev/quests.cpp
lua/modules/dev/search.cpp
lua/modules/dev/towners.cpp
lua/modules/floatingnumbers.cpp
lua/modules/i18n.cpp
lua/modules/items.cpp
lua/modules/log.cpp
lua/modules/monsters.cpp
lua/modules/player.cpp
lua/modules/render.cpp
lua/modules/system.cpp
lua/modules/towners.cpp
lua/repl.cpp
monsters/validation.cpp
4 years ago
panels/charpanel.cpp
panels/console.cpp
4 years ago
panels/info_box.cpp
panels/mainpanel.cpp
panels/partypanel.cpp
4 years ago
panels/spell_book.cpp
panels/spell_icons.cpp
panels/spell_list.cpp
4 years ago
platform/locale.cpp
portals/validation.cpp
qol/autopickup.cpp
4 years ago
qol/chatlog.cpp
qol/floatingnumbers.cpp
4 years ago
qol/itemlabels.cpp
qol/monhealthbar.cpp
4 years ago
qol/stash.cpp
qol/xpbar.cpp
quests/validation.cpp
4 years ago
storm/storm_net.cpp
storm/storm_svid.cpp
tables/misdat.cpp
tables/textdat.cpp
tables/townerdat.cpp
utils/display.cpp
utils/language.cpp
utils/sdl_bilinear_scale.cpp
utils/sdl_thread.cpp
utils/surface_to_clx.cpp
utils/timer.cpp)
# These files are responsible for most of the runtime in Debug mode.
# Apply some optimizations to them even in Debug mode to get reasonable performance.
#
# They also perform better with -O2 rather than -O3 even in Release mode.
set(_optimize_in_debug_srcs
engine/render/clx_render.cpp
engine/render/dun_render.cpp
engine/render/text_render.cpp
utils/cel_to_clx.cpp
utils/cl2_to_clx.cpp
utils/pcx_to_clx.cpp)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set_source_files_properties(${_optimize_in_debug_srcs} PROPERTIES COMPILE_OPTIONS "-O2;--param=max-vartrack-size=900000000")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set_source_files_properties(${_optimize_in_debug_srcs} PROPERTIES COMPILE_OPTIONS "-O2")
endif()
# We need to define all the object libraries first
# because our workaround for transitive dependency support
# requires targets to exist when calling `target_link_dependencies`
# (see object_libraries.cmake).
add_devilutionx_object_library(libdevilutionx_assets
engine/assets.cpp
)
target_link_dependencies(libdevilutionx_assets PUBLIC
DevilutionX::SDL
fmt::fmt
tl
libdevilutionx_headless_mode
libdevilutionx_game_mode
libdevilutionx_mpq
libdevilutionx_paths
libdevilutionx_sdl2_to_1_2_backports
libdevilutionx_strings
${DEVILUTIONX_PLATFORM_ASSETS_LINK_LIBRARIES}
)
add_devilutionx_object_library(libdevilutionx_cel_to_clx
utils/cel_to_clx.cpp
)
target_link_dependencies(libdevilutionx_cel_to_clx
PRIVATE
libdevilutionx_endian_write
)
add_devilutionx_object_library(libdevilutionx_cl2_to_clx
utils/cl2_to_clx.cpp
)
target_link_dependencies(libdevilutionx_cl2_to_clx
PRIVATE
libdevilutionx_endian_write
)
add_devilutionx_object_library(libdevilutionx_clx_render
engine/render/clx_render.cpp
)
target_link_dependencies(libdevilutionx_clx_render PUBLIC
DevilutionX::SDL
fmt::fmt
libdevilutionx_light_render
libdevilutionx_palette_blending
libdevilutionx_strings
)
add_devilutionx_object_library(libdevilutionx_codec
codec.cpp
sha.cpp
)
target_link_dependencies(libdevilutionx_codec PRIVATE
DevilutionX::SDL
libdevilutionx_log
)
add_devilutionx_object_library(libdevilutionx_controller_buttons
controls/controller_buttons.cpp
)
target_link_dependencies(libdevilutionx_controller_buttons
DevilutionX::SDL
)
add_devilutionx_object_library(libdevilutionx_control_mode
controls/control_mode.cpp
)
target_link_dependencies(libdevilutionx_control_mode PUBLIC
libdevilutionx_controller_buttons
)
add_devilutionx_object_library(libdevilutionx_padmapper
controls/padmapper.cpp
)
target_link_dependencies(libdevilutionx_padmapper PUBLIC
libdevilutionx_controller_buttons
libdevilutionx_options
)
Palette KD-tree: Fix compilation speed Tricks the compiler into skipping expensive `uninit var analysis` (`-Wmaybe-uninitialized`) by using a struct with state rather than separate variables for `best` / `bestDiff`. This has no performance impact. Also optimizes lookup a bit further and moves some code that does not need to be inlined to the cpp file. ``` Benchmark Time CPU Time Old Time New CPU Old CPU New ----------------------------------------------------------------------------------------------------------------------------------- BM_GenerateBlendedLookupTable_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 BM_GenerateBlendedLookupTable_mean +0.0237 +0.0237 2092090 2141601 2091732 2141291 BM_GenerateBlendedLookupTable_median +0.0237 +0.0237 2092104 2141662 2091669 2141319 BM_GenerateBlendedLookupTable_stddev -0.6414 -0.5834 664 238 538 224 BM_GenerateBlendedLookupTable_cv -0.6497 -0.5930 0 0 0 0 BM_BuildTree_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 BM_BuildTree_mean +0.0410 +0.0410 4495 4679 4494 4678 BM_BuildTree_median +0.0403 +0.0402 4494 4675 4493 4674 BM_BuildTree_stddev +0.9515 +0.9359 7 14 7 14 BM_BuildTree_cv +0.8746 +0.8596 0 0 0 0 BM_FindNearestNeighbor_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 BM_FindNearestNeighbor_mean -0.0399 -0.0398 1964257108 1885966812 1963954917 1885694336 BM_FindNearestNeighbor_median -0.0397 -0.0396 1963969748 1886074435 1963650984 1885803182 BM_FindNearestNeighbor_stddev -0.3380 -0.3443 1217360 805946 1225442 803469 BM_FindNearestNeighbor_cv -0.3105 -0.3171 0 0 0 0 OVERALL_GEOMEAN +0.0077 +0.0077 0 0 0 0 ```
7 months ago
add_devilutionx_object_library(libdevilutionx_palette_kd_tree
utils/palette_kd_tree.cpp
)
target_link_dependencies(libdevilutionx_palette_kd_tree PUBLIC
DevilutionX::SDL
libdevilutionx_strings
)
add_devilutionx_object_library(libdevilutionx_paths
utils/paths.cpp
)
target_link_dependencies(libdevilutionx_paths PUBLIC
DevilutionX::SDL
libdevilutionx_file_util
libdevilutionx_log
libdevilutionx_sdl2_to_1_2_backports
)
add_devilutionx_object_library(libdevilutionx_pcx_to_clx
utils/pcx_to_clx.cpp
)
target_link_dependencies(libdevilutionx_pcx_to_clx
PUBLIC
DevilutionX::SDL
libdevilutionx_assets
libdevilutionx_endian_write
)
add_devilutionx_object_library(libdevilutionx_primitive_render
engine/render/primitive_render.cpp
)
target_link_dependencies(libdevilutionx_primitive_render
PUBLIC
libdevilutionx_palette_blending
libdevilutionx_surface
)
add_devilutionx_object_library(libdevilutionx_crawl
crawl.cpp
)
target_link_dependencies(libdevilutionx_crawl PUBLIC
tl
)
add_devilutionx_object_library(libdevilutionx_direction
engine/direction.cpp
)
Make `dun_render` a standalone library Does not make `dun_render_benchmark` standalone yet as that will require more untangling. Benchmark is neutral: ``` Benchmark Time CPU Time Old Time New CPU Old CPU New ---------------------------------------------------------------------------------------------------------------------------------------------------------- Render<LeftTriangle, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTriangle, Solid, FullyLit>_mean +0.0119 +0.0120 8377 8477 8375 8475 Render<LeftTriangle, Solid, FullyLit>_median +0.0119 +0.0119 8376 8477 8375 8475 Render<LeftTriangle, Solid, FullyLit>_stddev -0.0884 -0.2462 2 1 1 1 Render<LeftTriangle, Solid, FullyLit>_cv -0.0992 -0.2551 0 0 0 0 Render<LeftTriangle, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTriangle, Solid, FullyDark>_mean +0.0910 +0.0910 21174 23100 21170 23097 Render<LeftTriangle, Solid, FullyDark>_median +0.0869 +0.0869 21183 23023 21179 23019 Render<LeftTriangle, Solid, FullyDark>_stddev -0.1528 -0.1593 267 226 268 225 Render<LeftTriangle, Solid, FullyDark>_cv -0.2234 -0.2294 0 0 0 0 Render<LeftTriangle, Solid, PartiallyLit>_pvalue 0.0013 0.0013 U Test, Repetitions: 10 vs 10 Render<LeftTriangle, Solid, PartiallyLit>_mean +0.0065 +0.0065 81168 81698 81151 81680 Render<LeftTriangle, Solid, PartiallyLit>_median +0.0075 +0.0073 81143 81748 81136 81730 Render<LeftTriangle, Solid, PartiallyLit>_stddev +0.8663 +0.8787 167 311 164 307 Render<LeftTriangle, Solid, PartiallyLit>_cv +0.8542 +0.8665 0 0 0 0 Render<LeftTriangle, Transparent, FullyLit>_pvalue 0.0028 0.0017 U Test, Repetitions: 10 vs 10 Render<LeftTriangle, Transparent, FullyLit>_mean -0.0239 -0.0239 94989 92719 94973 92703 Render<LeftTriangle, Transparent, FullyLit>_median -0.0122 -0.0123 93867 92717 93856 92704 Render<LeftTriangle, Transparent, FullyLit>_stddev -0.9920 -0.9955 2370 19 2368 11 Render<LeftTriangle, Transparent, FullyLit>_cv -0.9918 -0.9954 0 0 0 0 Render<LeftTriangle, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTriangle, Transparent, FullyDark>_mean -0.0841 -0.0841 76234 69821 76220 69809 Render<LeftTriangle, Transparent, FullyDark>_median -0.0831 -0.0832 76209 69877 76202 69864 Render<LeftTriangle, Transparent, FullyDark>_stddev -0.4486 -0.4538 441 243 440 241 Render<LeftTriangle, Transparent, FullyDark>_cv -0.3979 -0.4037 0 0 0 0 Render<LeftTriangle, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTriangle, Transparent, PartiallyLit>_mean +0.0022 +0.0021 128812 129091 128792 129067 Render<LeftTriangle, Transparent, PartiallyLit>_median +0.0023 +0.0023 128820 129115 128805 129096 Render<LeftTriangle, Transparent, PartiallyLit>_stddev +0.8757 +0.6866 50 93 53 90 Render<LeftTriangle, Transparent, PartiallyLit>_cv +0.8716 +0.6830 0 0 0 0 Render<RightTriangle, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTriangle, Solid, FullyLit>_mean +0.0057 +0.0057 8521 8570 8520 8569 Render<RightTriangle, Solid, FullyLit>_median +0.0057 +0.0057 8522 8570 8520 8568 Render<RightTriangle, Solid, FullyLit>_stddev -0.1826 -0.0420 1 1 1 1 Render<RightTriangle, Solid, FullyLit>_cv -0.1872 -0.0475 0 0 0 0 Render<RightTriangle, Solid, FullyDark>_pvalue 0.0006 0.0006 U Test, Repetitions: 10 vs 10 Render<RightTriangle, Solid, FullyDark>_mean -0.0303 -0.0303 22678 21991 22675 21987 Render<RightTriangle, Solid, FullyDark>_median -0.0360 -0.0359 22704 21888 22699 21883 Render<RightTriangle, Solid, FullyDark>_stddev +0.4759 +0.4648 195 288 196 287 Render<RightTriangle, Solid, FullyDark>_cv +0.5220 +0.5106 0 0 0 0 Render<RightTriangle, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTriangle, Solid, PartiallyLit>_mean +0.0338 +0.0338 83355 86170 83341 86157 Render<RightTriangle, Solid, PartiallyLit>_median +0.0347 +0.0348 83248 86140 83230 86126 Render<RightTriangle, Solid, PartiallyLit>_stddev +0.3670 +0.3423 238 326 240 322 Render<RightTriangle, Solid, PartiallyLit>_cv +0.3224 +0.2985 0 0 0 0 Render<RightTriangle, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTriangle, Transparent, FullyLit>_mean -0.0617 -0.0616 102726 96392 102706 96375 Render<RightTriangle, Transparent, FullyLit>_median -0.0598 -0.0597 102521 96394 102498 96375 Render<RightTriangle, Transparent, FullyLit>_stddev -0.9516 -0.9548 456 22 461 21 Render<RightTriangle, Transparent, FullyLit>_cv -0.9485 -0.9518 0 0 0 0 Render<RightTriangle, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTriangle, Transparent, FullyDark>_mean -0.1377 -0.1377 84505 72865 84492 72853 Render<RightTriangle, Transparent, FullyDark>_median -0.1374 -0.1374 84339 72748 84323 72740 Render<RightTriangle, Transparent, FullyDark>_stddev -0.2760 -0.2867 526 381 528 377 Render<RightTriangle, Transparent, FullyDark>_cv -0.1604 -0.1727 0 0 0 0 Render<RightTriangle, Transparent, PartiallyLit>_pvalue 0.0036 0.0017 U Test, Repetitions: 10 vs 10 Render<RightTriangle, Transparent, PartiallyLit>_mean +0.0010 +0.0010 131672 131808 131649 131784 Render<RightTriangle, Transparent, PartiallyLit>_median +0.0010 +0.0008 131665 131797 131654 131757 Render<RightTriangle, Transparent, PartiallyLit>_stddev -0.0688 -0.0128 81 75 72 71 Render<RightTriangle, Transparent, PartiallyLit>_cv -0.0697 -0.0138 0 0 0 0 Render<TransparentSquare, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<TransparentSquare, Solid, FullyLit>_mean -0.0300 -0.0300 143323 139021 143300 139000 Render<TransparentSquare, Solid, FullyLit>_median -0.0300 -0.0301 143321 139014 143310 138990 Render<TransparentSquare, Solid, FullyLit>_stddev +0.0008 -0.0820 43 43 43 39 Render<TransparentSquare, Solid, FullyLit>_cv +0.0318 -0.0536 0 0 0 0 Render<TransparentSquare, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<TransparentSquare, Solid, FullyDark>_mean -0.0100 -0.0100 134939 133588 134914 133565 Render<TransparentSquare, Solid, FullyDark>_median -0.0106 -0.0108 134964 133526 134948 133497 Render<TransparentSquare, Solid, FullyDark>_stddev +1.7508 +1.8682 99 273 96 276 Render<TransparentSquare, Solid, FullyDark>_cv +1.7786 +1.8972 0 0 0 0 Render<TransparentSquare, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<TransparentSquare, Solid, PartiallyLit>_mean -0.0460 -0.0460 152043 145043 152016 145020 Render<TransparentSquare, Solid, PartiallyLit>_median -0.0463 -0.0461 152012 144978 151964 144962 Render<TransparentSquare, Solid, PartiallyLit>_stddev -0.4453 -0.4334 267 148 266 151 Render<TransparentSquare, Solid, PartiallyLit>_cv -0.4185 -0.4060 0 0 0 0 Render<TransparentSquare, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<TransparentSquare, Transparent, FullyLit>_mean -0.0846 -0.0846 181333 165997 181304 165969 Render<TransparentSquare, Transparent, FullyLit>_median -0.0840 -0.0839 181184 165972 181147 165945 Render<TransparentSquare, Transparent, FullyLit>_stddev -0.5808 -0.5755 319 134 320 136 Render<TransparentSquare, Transparent, FullyLit>_cv -0.5421 -0.5362 0 0 0 0 Render<TransparentSquare, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<TransparentSquare, Transparent, FullyDark>_mean -0.0250 -0.0250 142232 138672 142208 138648 Render<TransparentSquare, Transparent, FullyDark>_median -0.0245 -0.0245 142144 138663 142128 138639 Render<TransparentSquare, Transparent, FullyDark>_stddev +0.1011 +0.0806 288 317 290 313 Render<TransparentSquare, Transparent, FullyDark>_cv +0.1294 +0.1084 0 0 0 0 Render<TransparentSquare, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<TransparentSquare, Transparent, PartiallyLit>_mean +0.0105 +0.0105 205439 207589 205397 207556 Render<TransparentSquare, Transparent, PartiallyLit>_median +0.0106 +0.0107 205402 207575 205355 207558 Render<TransparentSquare, Transparent, PartiallyLit>_stddev -0.4410 -0.3876 182 102 167 102 Render<TransparentSquare, Transparent, PartiallyLit>_cv -0.4468 -0.3940 0 0 0 0 Render<Square, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<Square, Solid, FullyLit>_mean -0.0010 -0.0010 11109 11098 11107 11096 Render<Square, Solid, FullyLit>_median -0.0010 -0.0010 11109 11097 11107 11095 Render<Square, Solid, FullyLit>_stddev -0.2265 +0.2791 3 2 2 2 Render<Square, Solid, FullyLit>_cv -0.2257 +0.2804 0 0 0 0 Render<Square, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<Square, Solid, FullyDark>_mean +0.0904 +0.0904 8513 9283 8512 9282 Render<Square, Solid, FullyDark>_median +0.0902 +0.0902 8521 9290 8519 9288 Render<Square, Solid, FullyDark>_stddev -0.1884 -0.1616 21 17 21 18 Render<Square, Solid, FullyDark>_cv -0.2557 -0.2311 0 0 0 0 Render<Square, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<Square, Solid, PartiallyLit>_mean +0.0038 +0.0038 163661 164289 163632 164259 Render<Square, Solid, PartiallyLit>_median +0.0038 +0.0040 163665 164290 163621 164269 Render<Square, Solid, PartiallyLit>_stddev +0.1746 +0.4412 34 40 28 40 Render<Square, Solid, PartiallyLit>_cv +0.1701 +0.4356 0 0 0 0 Render<Square, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<Square, Transparent, FullyLit>_mean -0.0029 -0.0029 197906 197340 197876 197304 Render<Square, Transparent, FullyLit>_median -0.0030 -0.0029 197929 197339 197872 197307 Render<Square, Transparent, FullyLit>_stddev -0.5965 -0.7554 61 25 62 15 Render<Square, Transparent, FullyLit>_cv -0.5953 -0.7547 0 0 0 0 Render<Square, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<Square, Transparent, FullyDark>_mean -0.0163 -0.0163 125659 123607 125641 123588 Render<Square, Transparent, FullyDark>_median -0.0163 -0.0163 125651 123609 125629 123579 Render<Square, Transparent, FullyDark>_stddev -0.7943 -0.8033 180 37 181 36 Render<Square, Transparent, FullyDark>_cv -0.7909 -0.8000 0 0 0 0 Render<Square, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<Square, Transparent, PartiallyLit>_mean +0.0182 +0.0182 278103 283157 278043 283107 Render<Square, Transparent, PartiallyLit>_median +0.0184 +0.0184 278086 283190 278017 283120 Render<Square, Transparent, PartiallyLit>_stddev +1.6051 +1.5303 81 210 82 209 Render<Square, Transparent, PartiallyLit>_cv +1.5586 +1.4850 0 0 0 0 Render<LeftTrapezoid, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTrapezoid, Solid, FullyLit>_mean -0.0068 -0.0068 3299 3276 3298 3276 Render<LeftTrapezoid, Solid, FullyLit>_median -0.0068 -0.0068 3299 3276 3298 3276 Render<LeftTrapezoid, Solid, FullyLit>_stddev -0.4844 -0.6856 1 0 1 0 Render<LeftTrapezoid, Solid, FullyLit>_cv -0.4809 -0.6834 0 0 0 0 Render<LeftTrapezoid, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTrapezoid, Solid, FullyDark>_mean +0.3996 +0.3997 5163 7227 5162 7226 Render<LeftTrapezoid, Solid, FullyDark>_median +0.3973 +0.3974 5174 7230 5173 7229 Render<LeftTrapezoid, Solid, FullyDark>_stddev -0.7835 -0.7789 89 19 89 20 Render<LeftTrapezoid, Solid, FullyDark>_cv -0.8453 -0.8420 0 0 0 0 Render<LeftTrapezoid, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTrapezoid, Solid, PartiallyLit>_mean -0.1228 -0.1228 50053 43907 50044 43900 Render<LeftTrapezoid, Solid, PartiallyLit>_median -0.1228 -0.1228 50062 43916 50054 43906 Render<LeftTrapezoid, Solid, PartiallyLit>_stddev +1.3916 +1.3800 63 150 64 151 Render<LeftTrapezoid, Solid, PartiallyLit>_cv +1.7263 +1.7131 0 0 0 0 Render<LeftTrapezoid, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTrapezoid, Transparent, FullyLit>_mean -0.1584 -0.1583 62677 52751 62665 52743 Render<LeftTrapezoid, Transparent, FullyLit>_median -0.1585 -0.1585 62670 52736 62656 52728 Render<LeftTrapezoid, Transparent, FullyLit>_stddev +1.1429 +1.4086 26 55 23 55 Render<LeftTrapezoid, Transparent, FullyLit>_cv +1.5461 +1.8617 0 0 0 0 Render<LeftTrapezoid, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTrapezoid, Transparent, FullyDark>_mean -0.1929 -0.1929 57688 46558 57679 46551 Render<LeftTrapezoid, Transparent, FullyDark>_median -0.1943 -0.1944 57681 46473 57672 46459 Render<LeftTrapezoid, Transparent, FullyDark>_stddev +2.8190 +2.7914 62 237 63 238 Render<LeftTrapezoid, Transparent, FullyDark>_cv +3.7319 +3.6978 0 0 0 0 Render<LeftTrapezoid, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTrapezoid, Transparent, PartiallyLit>_mean -0.0054 -0.0054 70694 70313 70682 70301 Render<LeftTrapezoid, Transparent, PartiallyLit>_median -0.0050 -0.0048 70671 70319 70650 70311 Render<LeftTrapezoid, Transparent, PartiallyLit>_stddev -0.7448 -0.7617 163 42 168 40 Render<LeftTrapezoid, Transparent, PartiallyLit>_cv -0.7434 -0.7604 0 0 0 0 Render<RightTrapezoid, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTrapezoid, Solid, FullyLit>_mean +0.0123 +0.0123 2985 3022 2984 3021 Render<RightTrapezoid, Solid, FullyLit>_median +0.0123 +0.0123 2985 3021 2984 3021 Render<RightTrapezoid, Solid, FullyLit>_stddev -0.4207 -0.4667 1 0 1 0 Render<RightTrapezoid, Solid, FullyLit>_cv -0.4277 -0.4731 0 0 0 0 Render<RightTrapezoid, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTrapezoid, Solid, FullyDark>_mean +0.1105 +0.1105 4894 5435 4893 5434 Render<RightTrapezoid, Solid, FullyDark>_median +0.1083 +0.1082 4902 5433 4901 5432 Render<RightTrapezoid, Solid, FullyDark>_stddev -0.1973 -0.1947 45 37 45 37 Render<RightTrapezoid, Solid, FullyDark>_cv -0.2772 -0.2748 0 0 0 0 Render<RightTrapezoid, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTrapezoid, Solid, PartiallyLit>_mean -0.0169 -0.0169 48201 47386 48192 47379 Render<RightTrapezoid, Solid, PartiallyLit>_median -0.0172 -0.0170 48184 47355 48170 47351 Render<RightTrapezoid, Solid, PartiallyLit>_stddev +0.6070 +0.5204 48 78 50 76 Render<RightTrapezoid, Solid, PartiallyLit>_cv +0.6346 +0.5465 0 0 0 0 Render<RightTrapezoid, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTrapezoid, Transparent, FullyLit>_mean -0.0023 -0.0023 48751 48639 48742 48632 Render<RightTrapezoid, Transparent, FullyLit>_median -0.0020 -0.0018 48751 48654 48738 48651 Render<RightTrapezoid, Transparent, FullyLit>_stddev +2.4354 +2.4427 10 35 11 36 Render<RightTrapezoid, Transparent, FullyLit>_cv +2.4433 +2.4505 0 0 0 0 Render<RightTrapezoid, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTrapezoid, Transparent, FullyDark>_mean -0.2247 -0.2247 40942 31742 40936 31736 Render<RightTrapezoid, Transparent, FullyDark>_median -0.2241 -0.2240 40904 31739 40895 31734 Render<RightTrapezoid, Transparent, FullyDark>_stddev -0.3455 -0.3546 165 108 167 108 Render<RightTrapezoid, Transparent, FullyDark>_cv -0.1558 -0.1676 0 0 0 0 Render<RightTrapezoid, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTrapezoid, Transparent, PartiallyLit>_mean -0.0908 -0.0908 74269 67523 74256 67512 Render<RightTrapezoid, Transparent, PartiallyLit>_median -0.0898 -0.0897 74196 67536 74176 67523 Render<RightTrapezoid, Transparent, PartiallyLit>_stddev -0.6590 -0.6568 147 50 146 50 Render<RightTrapezoid, Transparent, PartiallyLit>_cv -0.6250 -0.6225 0 0 0 0 BM_RenderBlackTile_pvalue 0.0539 0.0539 U Test, Repetitions: 10 vs 10 BM_RenderBlackTile_mean -0.0188 -0.0188 125 123 125 123 BM_RenderBlackTile_median -0.0263 -0.0264 126 122 125 122 BM_RenderBlackTile_stddev +1.0907 +1.0966 1 3 1 3 BM_RenderBlackTile_cv +1.1307 +1.1368 0 0 0 0 OVERALL_GEOMEAN -0.0207 -0.0207 0 0 0 0 ```
7 months ago
add_devilutionx_object_library(libdevilutionx_dun_render
engine/render/dun_render.cpp
)
target_link_libraries(libdevilutionx_dun_render
PUBLIC
DevilutionX::SDL
libdevilutionx_light_render
libdevilutionx_surface
PRIVATE
libdevilutionx_options
)
add_library(libdevilutionx_endian_write INTERFACE)
target_link_libraries(libdevilutionx_endian_write INTERFACE
DevilutionX::SDL
)
add_devilutionx_object_library(libdevilutionx_surface
engine/surface.cpp
)
target_link_dependencies(libdevilutionx_surface PUBLIC
DevilutionX::SDL
)
add_devilutionx_object_library(libdevilutionx_file_util
utils/file_util.cpp
)
target_link_dependencies(libdevilutionx_file_util PRIVATE
DevilutionX::SDL
libdevilutionx_log
${DEVILUTIONX_PLATFORM_FILE_UTIL_LINK_LIBRARIES}
)
add_devilutionx_object_library(libdevilutionx_format_int
utils/format_int.cpp
)
target_link_dependencies(libdevilutionx_format_int PUBLIC
libdevilutionx_strings
)
add_devilutionx_object_library(libdevilutionx_game_mode
game_mode.cpp
)
target_link_dependencies(libdevilutionx_game_mode PRIVATE
tl
magic_enum::magic_enum
libdevilutionx_options
)
add_devilutionx_object_library(libdevilutionx_gendung
levels/crypt.cpp
levels/drlg_l1.cpp
levels/drlg_l2.cpp
levels/drlg_l3.cpp
levels/drlg_l4.cpp
levels/gendung.cpp
)
target_link_dependencies(libdevilutionx_gendung PUBLIC
DevilutionX::SDL
fmt::fmt
tl
libdevilutionx_assets
libdevilutionx_items
libdevilutionx_monster
libdevilutionx_random
)
add_devilutionx_object_library(libdevilutionx_headless_mode
headless_mode.cpp
)
add_devilutionx_object_library(libdevilutionx_init
init.cpp
)
target_link_dependencies(libdevilutionx_init PUBLIC
magic_enum::magic_enum
libdevilutionx_assets
libdevilutionx_config
libdevilutionx_mpq
libdevilutionx_options
)
add_devilutionx_object_library(libdevilutionx_load_cel
engine/load_cel.cpp
)
target_link_dependencies(libdevilutionx_load_cel
PUBLIC
tl
PRIVATE
libdevilutionx_strings
)
if(SUPPORTS_MPQ)
target_link_dependencies(libdevilutionx_load_cel PRIVATE
libdevilutionx_mpq
libdevilutionx_cel_to_clx
)
else()
target_link_dependencies(libdevilutionx_load_cel PRIVATE
libdevilutionx_load_clx
)
endif()
add_devilutionx_object_library(libdevilutionx_load_cl2
engine/load_cl2.cpp
)
target_link_dependencies(libdevilutionx_load_cl2
PUBLIC
tl
libdevilutionx_endian_write
PRIVATE
libdevilutionx_strings
)
if(SUPPORTS_MPQ)
target_link_dependencies(libdevilutionx_load_cl2 PUBLIC
libdevilutionx_mpq
libdevilutionx_cl2_to_clx
)
else()
target_link_dependencies(libdevilutionx_load_cl2 PRIVATE
libdevilutionx_load_clx
)
endif()
add_devilutionx_object_library(libdevilutionx_load_clx
engine/load_clx.cpp
)
target_link_dependencies(libdevilutionx_load_clx
PUBLIC
tl
PRIVATE
libdevilutionx_assets
)
add_devilutionx_object_library(libdevilutionx_load_pcx
engine/load_pcx.cpp
)
target_link_dependencies(libdevilutionx_load_pcx
PRIVATE
DevilutionX::SDL
libdevilutionx_sdl2_to_1_2_backports
libdevilutionx_log
libdevilutionx_strings
)
if(SUPPORTS_MPQ)
target_link_dependencies(libdevilutionx_load_pcx PUBLIC
libdevilutionx_assets
libdevilutionx_pcx_to_clx
)
else()
target_link_dependencies(libdevilutionx_load_pcx PRIVATE
libdevilutionx_load_clx
)
endif()
add_devilutionx_object_library(libdevilutionx_light_render
engine/render/light_render.cpp
)
add_devilutionx_object_library(libdevilutionx_lighting
lighting.cpp
)
target_link_dependencies(libdevilutionx_lighting PUBLIC
DevilutionX::SDL
fmt::fmt
magic_enum::magic_enum
tl
unordered_dense::unordered_dense
libdevilutionx_vision
)
add_devilutionx_object_library(libdevilutionx_logged_fstream
utils/logged_fstream.cpp
)
target_link_dependencies(libdevilutionx_logged_fstream PUBLIC
libdevilutionx_file_util
libdevilutionx_log
)
add_devilutionx_object_library(libdevilutionx_items
tables/itemdat.cpp
items.cpp
)
target_link_dependencies(libdevilutionx_items PUBLIC
DevilutionX::SDL
sol2::sol2
tl
libdevilutionx_headless_mode
libdevilutionx_sound
libdevilutionx_spells
libdevilutionx_stores
libdevilutionx_strings
)
add_devilutionx_object_library(libdevilutionx_ini
utils/ini.cpp
)
target_link_dependencies(libdevilutionx_ini PUBLIC
fmt::fmt
tl
unordered_dense::unordered_dense
libdevilutionx_strings
libdevilutionx_utf8
)
# We use an INTERFACE library rather than an OBJECT library
# because `libdevilutionx_log` does not have any sources.
add_library(libdevilutionx_log INTERFACE)
target_include_directories(libdevilutionx_log INTERFACE
${PROJECT_SOURCE_DIR}/Source)
target_link_libraries(libdevilutionx_log INTERFACE
DevilutionX::SDL
fmt::fmt
)
target_sources(libdevilutionx_log INTERFACE $<TARGET_OBJECTS:libdevilutionx_strings>)
add_devilutionx_object_library(libdevilutionx_level_objects
tables/objdat.cpp
objects.cpp
)
target_link_dependencies(libdevilutionx_level_objects PUBLIC
DevilutionX::SDL
unordered_dense::unordered_dense
tl
libdevilutionx_direction
libdevilutionx_headless_mode
libdevilutionx_monster
libdevilutionx_options
libdevilutionx_player
libdevilutionx_random
libdevilutionx_txtdata
)
add_devilutionx_object_library(libdevilutionx_monster
tables/monstdat.cpp
monster.cpp
)
target_link_dependencies(libdevilutionx_monster
PUBLIC
DevilutionX::SDL
magic_enum::magic_enum
sol2::sol2
tl
unordered_dense::unordered_dense
libdevilutionx_game_mode
libdevilutionx_headless_mode
libdevilutionx_sound
libdevilutionx_txtdata
PRIVATE
libdevilutionx_cl2_to_clx
)
add_devilutionx_object_library(libdevilutionx_palette_blending
utils/palette_blending.cpp
)
target_link_dependencies(libdevilutionx_palette_blending PUBLIC
DevilutionX::SDL
Palette KD-tree: Fix compilation speed Tricks the compiler into skipping expensive `uninit var analysis` (`-Wmaybe-uninitialized`) by using a struct with state rather than separate variables for `best` / `bestDiff`. This has no performance impact. Also optimizes lookup a bit further and moves some code that does not need to be inlined to the cpp file. ``` Benchmark Time CPU Time Old Time New CPU Old CPU New ----------------------------------------------------------------------------------------------------------------------------------- BM_GenerateBlendedLookupTable_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 BM_GenerateBlendedLookupTable_mean +0.0237 +0.0237 2092090 2141601 2091732 2141291 BM_GenerateBlendedLookupTable_median +0.0237 +0.0237 2092104 2141662 2091669 2141319 BM_GenerateBlendedLookupTable_stddev -0.6414 -0.5834 664 238 538 224 BM_GenerateBlendedLookupTable_cv -0.6497 -0.5930 0 0 0 0 BM_BuildTree_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 BM_BuildTree_mean +0.0410 +0.0410 4495 4679 4494 4678 BM_BuildTree_median +0.0403 +0.0402 4494 4675 4493 4674 BM_BuildTree_stddev +0.9515 +0.9359 7 14 7 14 BM_BuildTree_cv +0.8746 +0.8596 0 0 0 0 BM_FindNearestNeighbor_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 BM_FindNearestNeighbor_mean -0.0399 -0.0398 1964257108 1885966812 1963954917 1885694336 BM_FindNearestNeighbor_median -0.0397 -0.0396 1963969748 1886074435 1963650984 1885803182 BM_FindNearestNeighbor_stddev -0.3380 -0.3443 1217360 805946 1225442 803469 BM_FindNearestNeighbor_cv -0.3105 -0.3171 0 0 0 0 OVERALL_GEOMEAN +0.0077 +0.0077 0 0 0 0 ```
7 months ago
libdevilutionx_palette_kd_tree
libdevilutionx_strings
)
add_devilutionx_object_library(libdevilutionx_parse_int
utils/parse_int.cpp
)
target_link_dependencies(libdevilutionx_parse_int PUBLIC
tl
)
if(SUPPORTS_MPQ)
add_devilutionx_object_library(libdevilutionx_mpq
mpq/mpq_common.cpp
mpq/mpq_reader.cpp
mpq/mpq_sdl_rwops.cpp
mpq/mpq_writer.cpp
)
target_link_dependencies(libdevilutionx_mpq PUBLIC
DevilutionX::SDL
fmt::fmt
tl
libmpq
libdevilutionx_file_util
libdevilutionx_logged_fstream
libdevilutionx_pkware_encrypt
libdevilutionx_strings
)
else()
add_library(libdevilutionx_mpq INTERFACE)
endif()
add_devilutionx_object_library(libdevilutionx_multiplayer
multi.cpp
pack.cpp
)
target_link_dependencies(libdevilutionx_multiplayer PUBLIC
libdevilutionx_config
libdevilutionx_items
)
add_devilutionx_object_library(libdevilutionx_options
options.cpp
)
target_link_dependencies(libdevilutionx_options PUBLIC
DevilutionX::SDL
fmt::fmt
magic_enum::magic_enum
tl
unordered_dense::unordered_dense
libdevilutionx_controller_buttons
libdevilutionx_control_mode
libdevilutionx_logged_fstream
libdevilutionx_quick_messages
libdevilutionx_strings
libdevilutionx_ini
)
add_devilutionx_object_library(libdevilutionx_pathfinding
engine/path.cpp
)
target_link_dependencies(libdevilutionx_pathfinding PUBLIC
tl
libdevilutionx_crawl
libdevilutionx_direction
)
if(SUPPORTS_MPQ OR NOT NONET)
add_devilutionx_object_library(libdevilutionx_pkware_encrypt
encrypt.cpp
)
target_link_dependencies(libdevilutionx_pkware_encrypt PUBLIC
DevilutionX::SDL
PKWare
)
else()
add_library(libdevilutionx_pkware_encrypt INTERFACE)
endif()
add_devilutionx_object_library(libdevilutionx_player
player.cpp
tables/playerdat.cpp
)
target_link_dependencies(libdevilutionx_player
PUBLIC
DevilutionX::SDL
fmt::fmt
magic_enum::magic_enum
sol2::sol2
tl
unordered_dense::unordered_dense
libdevilutionx_game_mode
PRIVATE
libdevilutionx_load_cl2
libdevilutionx_strings
)
add_devilutionx_object_library(libdevilutionx_quests
quests.cpp
)
target_link_dependencies(libdevilutionx_quests PUBLIC
libdevilutionx_surface
libdevilutionx_gendung
)
add_devilutionx_object_library(libdevilutionx_random
engine/random.cpp
)
add_devilutionx_object_library(libdevilutionx_quick_messages
quick_messages.cpp
)
add_devilutionx_object_library(libdevilutionx_spells
tables/spelldat.cpp
spells.cpp
)
target_link_dependencies(libdevilutionx_spells PUBLIC
tl
libdevilutionx_player
libdevilutionx_txtdata
)
add_devilutionx_object_library(libdevilutionx_text_render
engine/render/text_render.cpp
)
target_link_dependencies(libdevilutionx_text_render
PUBLIC
libdevilutionx_surface
PRIVATE
fmt::fmt
unordered_dense::unordered_dense
libdevilutionx_clx_render
libdevilutionx_game_mode
libdevilutionx_load_cel
libdevilutionx_load_clx
libdevilutionx_load_pcx
libdevilutionx_log
libdevilutionx_primitive_render
libdevilutionx_ticks
libdevilutionx_utf8
)
add_devilutionx_object_library(libdevilutionx_ticks
engine/ticks.cpp
)
target_link_dependencies(libdevilutionx_ticks PRIVATE
DevilutionX::SDL
)
add_devilutionx_object_library(libdevilutionx_txtdata
data/file.cpp
data/parser.cpp
data/record_reader.cpp
data/value_reader.cpp
)
target_link_dependencies(libdevilutionx_txtdata PUBLIC
fmt::fmt
tl
libdevilutionx_assets
libdevilutionx_parse_int
libdevilutionx_strings
)
add_devilutionx_object_library(libdevilutionx_utf8
utils/utf8.cpp
)
target_link_dependencies(libdevilutionx_utf8 PRIVATE
SheenBidi::SheenBidi
)
if(NOSOUND)
add_devilutionx_object_library(libdevilutionx_sound
effects_stubs.cpp
engine/sound_stubs.cpp
)
target_link_dependencies(libdevilutionx_sound PUBLIC
DevilutionX::SDL
fmt::fmt
magic_enum::magic_enum
tl
unordered_dense::unordered_dense
libdevilutionx_options
libdevilutionx_random
libdevilutionx_sdl2_to_1_2_backports
)
else()
add_devilutionx_object_library(libdevilutionx_sound
effects.cpp
engine/sound.cpp
utils/soundsample.cpp
)
if(USE_SDL3)
target_link_dependencies(libdevilutionx_sound PUBLIC
SDL3_mixer::SDL3_mixer
)
else()
target_sources(libdevilutionx_sound PRIVATE
utils/push_aulib_decoder.cpp)
target_link_dependencies(libdevilutionx_sound PUBLIC
SDL_audiolib::SDL_audiolib
)
endif()
target_link_dependencies(libdevilutionx_sound PUBLIC
DevilutionX::SDL
fmt::fmt
magic_enum::magic_enum
tl
unordered_dense::unordered_dense
libdevilutionx_options
libdevilutionx_random
libdevilutionx_sdl2_to_1_2_backports
)
endif()
add_devilutionx_object_library(libdevilutionx_stores
stores.cpp
)
target_link_dependencies(libdevilutionx_stores PUBLIC
DevilutionX::SDL
fmt::fmt
tl
libdevilutionx_clx_render
libdevilutionx_options
libdevilutionx_sound
libdevilutionx_strings
)
add_devilutionx_object_library(libdevilutionx_strings
utils/str_cat.cpp
utils/str_case.cpp
)
target_link_dependencies(libdevilutionx_strings PRIVATE
fmt::fmt)
add_devilutionx_object_library(libdevilutionx_utils_console
utils/console.cpp
)
add_devilutionx_object_library(libdevilutionx_vision
vision.cpp
)
target_link_dependencies(libdevilutionx_vision PUBLIC
tl
)
if(USE_SDL1)
add_devilutionx_library(libdevilutionx_sdl2_to_1_2_backports STATIC
utils/sdl2_to_1_2_backports.cpp
)
target_link_dependencies(libdevilutionx_sdl2_to_1_2_backports PRIVATE
libdevilutionx_strings
libdevilutionx_utils_console
)
target_link_libraries(DevilutionX::SDL INTERFACE
libdevilutionx_sdl2_to_1_2_backports
)
if(APPLE)
enable_language(OBJC)
target_sources(libdevilutionx_sdl2_to_1_2_backports PRIVATE
platform/macos_sdl1/SDL_filesystem.m)
target_link_libraries(libdevilutionx_sdl2_to_1_2_backports PRIVATE
"-framework Foundation")
endif()
else()
add_library(libdevilutionx_sdl2_to_1_2_backports INTERFACE)
endif()
if(IOS)
list(APPEND libdevilutionx_SRCS platform/ios/ios_paths.m)
endif()
if(NOT DISABLE_DEMOMODE)
list(APPEND libdevilutionx_SRCS engine/demomode.cpp)
endif()
if(NOT NONET)
if(NOT DISABLE_TCP)
list(APPEND libdevilutionx_SRCS
dvlnet/tcp_client.cpp
dvlnet/tcp_server.cpp)
endif()
if(NOT DISABLE_ZERO_TIER)
list(APPEND libdevilutionx_SRCS
dvlnet/protocol_zt.cpp
dvlnet/zerotier_native.cpp
dvlnet/zerotier_lwip.cpp)
endif()
endif()
if(NOT USE_SDL1)
list(APPEND libdevilutionx_SRCS
controls/devices/game_controller.cpp
controls/touch/event_handlers.cpp
controls/touch/gamepad.cpp
controls/touch/renderers.cpp)
endif()
if(DISCORD_INTEGRATION)
list(APPEND libdevilutionx_SRCS
discord/discord.cpp
)
endif()
if(SCREEN_READER_INTEGRATION)
list(APPEND libdevilutionx_SRCS
utils/screen_reader.cpp
)
endif()
if(DEVILUTIONX_SCREENSHOT_FORMAT STREQUAL DEVILUTIONX_SCREENSHOT_FORMAT_PCX)
list(APPEND libdevilutionx_SRCS
utils/surface_to_pcx.cpp
)
endif()
if(DEVILUTIONX_SCREENSHOT_FORMAT STREQUAL DEVILUTIONX_SCREENSHOT_FORMAT_PNG)
add_devilutionx_object_library(libdevilutionx_surface_to_png
utils/surface_to_png.cpp
)
target_link_dependencies(libdevilutionx_surface_to_png
PUBLIC
DevilutionX::SDL
tl
libdevilutionx_surface
)
if(USE_SDL3)
target_link_dependencies(libdevilutionx_surface_to_png PUBLIC SDL3_image::SDL3_image)
target_compile_definitions(libdevilutionx_surface_to_png INTERFACE USE_SDL3)
else()
target_link_dependencies(libdevilutionx_surface_to_png PUBLIC SDL2::SDL2_image)
endif()
endif()
add_devilutionx_object_library(libdevilutionx ${libdevilutionx_SRCS})
target_include_directories(libdevilutionx PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
target_link_dependencies(libdevilutionx PUBLIC
DevilutionX::SDL
fmt::fmt
libsmackerdec
${LUA_LIBRARIES}
magic_enum::magic_enum
sol2::sol2
tl
unordered_dense::unordered_dense
libdevilutionx_assets
libdevilutionx_clx_render
libdevilutionx_codec
libdevilutionx_config
libdevilutionx_controller_buttons
libdevilutionx_control_mode
libdevilutionx_crawl
libdevilutionx_direction
Make `dun_render` a standalone library Does not make `dun_render_benchmark` standalone yet as that will require more untangling. Benchmark is neutral: ``` Benchmark Time CPU Time Old Time New CPU Old CPU New ---------------------------------------------------------------------------------------------------------------------------------------------------------- Render<LeftTriangle, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTriangle, Solid, FullyLit>_mean +0.0119 +0.0120 8377 8477 8375 8475 Render<LeftTriangle, Solid, FullyLit>_median +0.0119 +0.0119 8376 8477 8375 8475 Render<LeftTriangle, Solid, FullyLit>_stddev -0.0884 -0.2462 2 1 1 1 Render<LeftTriangle, Solid, FullyLit>_cv -0.0992 -0.2551 0 0 0 0 Render<LeftTriangle, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTriangle, Solid, FullyDark>_mean +0.0910 +0.0910 21174 23100 21170 23097 Render<LeftTriangle, Solid, FullyDark>_median +0.0869 +0.0869 21183 23023 21179 23019 Render<LeftTriangle, Solid, FullyDark>_stddev -0.1528 -0.1593 267 226 268 225 Render<LeftTriangle, Solid, FullyDark>_cv -0.2234 -0.2294 0 0 0 0 Render<LeftTriangle, Solid, PartiallyLit>_pvalue 0.0013 0.0013 U Test, Repetitions: 10 vs 10 Render<LeftTriangle, Solid, PartiallyLit>_mean +0.0065 +0.0065 81168 81698 81151 81680 Render<LeftTriangle, Solid, PartiallyLit>_median +0.0075 +0.0073 81143 81748 81136 81730 Render<LeftTriangle, Solid, PartiallyLit>_stddev +0.8663 +0.8787 167 311 164 307 Render<LeftTriangle, Solid, PartiallyLit>_cv +0.8542 +0.8665 0 0 0 0 Render<LeftTriangle, Transparent, FullyLit>_pvalue 0.0028 0.0017 U Test, Repetitions: 10 vs 10 Render<LeftTriangle, Transparent, FullyLit>_mean -0.0239 -0.0239 94989 92719 94973 92703 Render<LeftTriangle, Transparent, FullyLit>_median -0.0122 -0.0123 93867 92717 93856 92704 Render<LeftTriangle, Transparent, FullyLit>_stddev -0.9920 -0.9955 2370 19 2368 11 Render<LeftTriangle, Transparent, FullyLit>_cv -0.9918 -0.9954 0 0 0 0 Render<LeftTriangle, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTriangle, Transparent, FullyDark>_mean -0.0841 -0.0841 76234 69821 76220 69809 Render<LeftTriangle, Transparent, FullyDark>_median -0.0831 -0.0832 76209 69877 76202 69864 Render<LeftTriangle, Transparent, FullyDark>_stddev -0.4486 -0.4538 441 243 440 241 Render<LeftTriangle, Transparent, FullyDark>_cv -0.3979 -0.4037 0 0 0 0 Render<LeftTriangle, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTriangle, Transparent, PartiallyLit>_mean +0.0022 +0.0021 128812 129091 128792 129067 Render<LeftTriangle, Transparent, PartiallyLit>_median +0.0023 +0.0023 128820 129115 128805 129096 Render<LeftTriangle, Transparent, PartiallyLit>_stddev +0.8757 +0.6866 50 93 53 90 Render<LeftTriangle, Transparent, PartiallyLit>_cv +0.8716 +0.6830 0 0 0 0 Render<RightTriangle, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTriangle, Solid, FullyLit>_mean +0.0057 +0.0057 8521 8570 8520 8569 Render<RightTriangle, Solid, FullyLit>_median +0.0057 +0.0057 8522 8570 8520 8568 Render<RightTriangle, Solid, FullyLit>_stddev -0.1826 -0.0420 1 1 1 1 Render<RightTriangle, Solid, FullyLit>_cv -0.1872 -0.0475 0 0 0 0 Render<RightTriangle, Solid, FullyDark>_pvalue 0.0006 0.0006 U Test, Repetitions: 10 vs 10 Render<RightTriangle, Solid, FullyDark>_mean -0.0303 -0.0303 22678 21991 22675 21987 Render<RightTriangle, Solid, FullyDark>_median -0.0360 -0.0359 22704 21888 22699 21883 Render<RightTriangle, Solid, FullyDark>_stddev +0.4759 +0.4648 195 288 196 287 Render<RightTriangle, Solid, FullyDark>_cv +0.5220 +0.5106 0 0 0 0 Render<RightTriangle, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTriangle, Solid, PartiallyLit>_mean +0.0338 +0.0338 83355 86170 83341 86157 Render<RightTriangle, Solid, PartiallyLit>_median +0.0347 +0.0348 83248 86140 83230 86126 Render<RightTriangle, Solid, PartiallyLit>_stddev +0.3670 +0.3423 238 326 240 322 Render<RightTriangle, Solid, PartiallyLit>_cv +0.3224 +0.2985 0 0 0 0 Render<RightTriangle, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTriangle, Transparent, FullyLit>_mean -0.0617 -0.0616 102726 96392 102706 96375 Render<RightTriangle, Transparent, FullyLit>_median -0.0598 -0.0597 102521 96394 102498 96375 Render<RightTriangle, Transparent, FullyLit>_stddev -0.9516 -0.9548 456 22 461 21 Render<RightTriangle, Transparent, FullyLit>_cv -0.9485 -0.9518 0 0 0 0 Render<RightTriangle, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTriangle, Transparent, FullyDark>_mean -0.1377 -0.1377 84505 72865 84492 72853 Render<RightTriangle, Transparent, FullyDark>_median -0.1374 -0.1374 84339 72748 84323 72740 Render<RightTriangle, Transparent, FullyDark>_stddev -0.2760 -0.2867 526 381 528 377 Render<RightTriangle, Transparent, FullyDark>_cv -0.1604 -0.1727 0 0 0 0 Render<RightTriangle, Transparent, PartiallyLit>_pvalue 0.0036 0.0017 U Test, Repetitions: 10 vs 10 Render<RightTriangle, Transparent, PartiallyLit>_mean +0.0010 +0.0010 131672 131808 131649 131784 Render<RightTriangle, Transparent, PartiallyLit>_median +0.0010 +0.0008 131665 131797 131654 131757 Render<RightTriangle, Transparent, PartiallyLit>_stddev -0.0688 -0.0128 81 75 72 71 Render<RightTriangle, Transparent, PartiallyLit>_cv -0.0697 -0.0138 0 0 0 0 Render<TransparentSquare, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<TransparentSquare, Solid, FullyLit>_mean -0.0300 -0.0300 143323 139021 143300 139000 Render<TransparentSquare, Solid, FullyLit>_median -0.0300 -0.0301 143321 139014 143310 138990 Render<TransparentSquare, Solid, FullyLit>_stddev +0.0008 -0.0820 43 43 43 39 Render<TransparentSquare, Solid, FullyLit>_cv +0.0318 -0.0536 0 0 0 0 Render<TransparentSquare, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<TransparentSquare, Solid, FullyDark>_mean -0.0100 -0.0100 134939 133588 134914 133565 Render<TransparentSquare, Solid, FullyDark>_median -0.0106 -0.0108 134964 133526 134948 133497 Render<TransparentSquare, Solid, FullyDark>_stddev +1.7508 +1.8682 99 273 96 276 Render<TransparentSquare, Solid, FullyDark>_cv +1.7786 +1.8972 0 0 0 0 Render<TransparentSquare, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<TransparentSquare, Solid, PartiallyLit>_mean -0.0460 -0.0460 152043 145043 152016 145020 Render<TransparentSquare, Solid, PartiallyLit>_median -0.0463 -0.0461 152012 144978 151964 144962 Render<TransparentSquare, Solid, PartiallyLit>_stddev -0.4453 -0.4334 267 148 266 151 Render<TransparentSquare, Solid, PartiallyLit>_cv -0.4185 -0.4060 0 0 0 0 Render<TransparentSquare, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<TransparentSquare, Transparent, FullyLit>_mean -0.0846 -0.0846 181333 165997 181304 165969 Render<TransparentSquare, Transparent, FullyLit>_median -0.0840 -0.0839 181184 165972 181147 165945 Render<TransparentSquare, Transparent, FullyLit>_stddev -0.5808 -0.5755 319 134 320 136 Render<TransparentSquare, Transparent, FullyLit>_cv -0.5421 -0.5362 0 0 0 0 Render<TransparentSquare, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<TransparentSquare, Transparent, FullyDark>_mean -0.0250 -0.0250 142232 138672 142208 138648 Render<TransparentSquare, Transparent, FullyDark>_median -0.0245 -0.0245 142144 138663 142128 138639 Render<TransparentSquare, Transparent, FullyDark>_stddev +0.1011 +0.0806 288 317 290 313 Render<TransparentSquare, Transparent, FullyDark>_cv +0.1294 +0.1084 0 0 0 0 Render<TransparentSquare, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<TransparentSquare, Transparent, PartiallyLit>_mean +0.0105 +0.0105 205439 207589 205397 207556 Render<TransparentSquare, Transparent, PartiallyLit>_median +0.0106 +0.0107 205402 207575 205355 207558 Render<TransparentSquare, Transparent, PartiallyLit>_stddev -0.4410 -0.3876 182 102 167 102 Render<TransparentSquare, Transparent, PartiallyLit>_cv -0.4468 -0.3940 0 0 0 0 Render<Square, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<Square, Solid, FullyLit>_mean -0.0010 -0.0010 11109 11098 11107 11096 Render<Square, Solid, FullyLit>_median -0.0010 -0.0010 11109 11097 11107 11095 Render<Square, Solid, FullyLit>_stddev -0.2265 +0.2791 3 2 2 2 Render<Square, Solid, FullyLit>_cv -0.2257 +0.2804 0 0 0 0 Render<Square, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<Square, Solid, FullyDark>_mean +0.0904 +0.0904 8513 9283 8512 9282 Render<Square, Solid, FullyDark>_median +0.0902 +0.0902 8521 9290 8519 9288 Render<Square, Solid, FullyDark>_stddev -0.1884 -0.1616 21 17 21 18 Render<Square, Solid, FullyDark>_cv -0.2557 -0.2311 0 0 0 0 Render<Square, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<Square, Solid, PartiallyLit>_mean +0.0038 +0.0038 163661 164289 163632 164259 Render<Square, Solid, PartiallyLit>_median +0.0038 +0.0040 163665 164290 163621 164269 Render<Square, Solid, PartiallyLit>_stddev +0.1746 +0.4412 34 40 28 40 Render<Square, Solid, PartiallyLit>_cv +0.1701 +0.4356 0 0 0 0 Render<Square, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<Square, Transparent, FullyLit>_mean -0.0029 -0.0029 197906 197340 197876 197304 Render<Square, Transparent, FullyLit>_median -0.0030 -0.0029 197929 197339 197872 197307 Render<Square, Transparent, FullyLit>_stddev -0.5965 -0.7554 61 25 62 15 Render<Square, Transparent, FullyLit>_cv -0.5953 -0.7547 0 0 0 0 Render<Square, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<Square, Transparent, FullyDark>_mean -0.0163 -0.0163 125659 123607 125641 123588 Render<Square, Transparent, FullyDark>_median -0.0163 -0.0163 125651 123609 125629 123579 Render<Square, Transparent, FullyDark>_stddev -0.7943 -0.8033 180 37 181 36 Render<Square, Transparent, FullyDark>_cv -0.7909 -0.8000 0 0 0 0 Render<Square, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<Square, Transparent, PartiallyLit>_mean +0.0182 +0.0182 278103 283157 278043 283107 Render<Square, Transparent, PartiallyLit>_median +0.0184 +0.0184 278086 283190 278017 283120 Render<Square, Transparent, PartiallyLit>_stddev +1.6051 +1.5303 81 210 82 209 Render<Square, Transparent, PartiallyLit>_cv +1.5586 +1.4850 0 0 0 0 Render<LeftTrapezoid, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTrapezoid, Solid, FullyLit>_mean -0.0068 -0.0068 3299 3276 3298 3276 Render<LeftTrapezoid, Solid, FullyLit>_median -0.0068 -0.0068 3299 3276 3298 3276 Render<LeftTrapezoid, Solid, FullyLit>_stddev -0.4844 -0.6856 1 0 1 0 Render<LeftTrapezoid, Solid, FullyLit>_cv -0.4809 -0.6834 0 0 0 0 Render<LeftTrapezoid, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTrapezoid, Solid, FullyDark>_mean +0.3996 +0.3997 5163 7227 5162 7226 Render<LeftTrapezoid, Solid, FullyDark>_median +0.3973 +0.3974 5174 7230 5173 7229 Render<LeftTrapezoid, Solid, FullyDark>_stddev -0.7835 -0.7789 89 19 89 20 Render<LeftTrapezoid, Solid, FullyDark>_cv -0.8453 -0.8420 0 0 0 0 Render<LeftTrapezoid, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTrapezoid, Solid, PartiallyLit>_mean -0.1228 -0.1228 50053 43907 50044 43900 Render<LeftTrapezoid, Solid, PartiallyLit>_median -0.1228 -0.1228 50062 43916 50054 43906 Render<LeftTrapezoid, Solid, PartiallyLit>_stddev +1.3916 +1.3800 63 150 64 151 Render<LeftTrapezoid, Solid, PartiallyLit>_cv +1.7263 +1.7131 0 0 0 0 Render<LeftTrapezoid, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTrapezoid, Transparent, FullyLit>_mean -0.1584 -0.1583 62677 52751 62665 52743 Render<LeftTrapezoid, Transparent, FullyLit>_median -0.1585 -0.1585 62670 52736 62656 52728 Render<LeftTrapezoid, Transparent, FullyLit>_stddev +1.1429 +1.4086 26 55 23 55 Render<LeftTrapezoid, Transparent, FullyLit>_cv +1.5461 +1.8617 0 0 0 0 Render<LeftTrapezoid, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTrapezoid, Transparent, FullyDark>_mean -0.1929 -0.1929 57688 46558 57679 46551 Render<LeftTrapezoid, Transparent, FullyDark>_median -0.1943 -0.1944 57681 46473 57672 46459 Render<LeftTrapezoid, Transparent, FullyDark>_stddev +2.8190 +2.7914 62 237 63 238 Render<LeftTrapezoid, Transparent, FullyDark>_cv +3.7319 +3.6978 0 0 0 0 Render<LeftTrapezoid, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<LeftTrapezoid, Transparent, PartiallyLit>_mean -0.0054 -0.0054 70694 70313 70682 70301 Render<LeftTrapezoid, Transparent, PartiallyLit>_median -0.0050 -0.0048 70671 70319 70650 70311 Render<LeftTrapezoid, Transparent, PartiallyLit>_stddev -0.7448 -0.7617 163 42 168 40 Render<LeftTrapezoid, Transparent, PartiallyLit>_cv -0.7434 -0.7604 0 0 0 0 Render<RightTrapezoid, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTrapezoid, Solid, FullyLit>_mean +0.0123 +0.0123 2985 3022 2984 3021 Render<RightTrapezoid, Solid, FullyLit>_median +0.0123 +0.0123 2985 3021 2984 3021 Render<RightTrapezoid, Solid, FullyLit>_stddev -0.4207 -0.4667 1 0 1 0 Render<RightTrapezoid, Solid, FullyLit>_cv -0.4277 -0.4731 0 0 0 0 Render<RightTrapezoid, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTrapezoid, Solid, FullyDark>_mean +0.1105 +0.1105 4894 5435 4893 5434 Render<RightTrapezoid, Solid, FullyDark>_median +0.1083 +0.1082 4902 5433 4901 5432 Render<RightTrapezoid, Solid, FullyDark>_stddev -0.1973 -0.1947 45 37 45 37 Render<RightTrapezoid, Solid, FullyDark>_cv -0.2772 -0.2748 0 0 0 0 Render<RightTrapezoid, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTrapezoid, Solid, PartiallyLit>_mean -0.0169 -0.0169 48201 47386 48192 47379 Render<RightTrapezoid, Solid, PartiallyLit>_median -0.0172 -0.0170 48184 47355 48170 47351 Render<RightTrapezoid, Solid, PartiallyLit>_stddev +0.6070 +0.5204 48 78 50 76 Render<RightTrapezoid, Solid, PartiallyLit>_cv +0.6346 +0.5465 0 0 0 0 Render<RightTrapezoid, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTrapezoid, Transparent, FullyLit>_mean -0.0023 -0.0023 48751 48639 48742 48632 Render<RightTrapezoid, Transparent, FullyLit>_median -0.0020 -0.0018 48751 48654 48738 48651 Render<RightTrapezoid, Transparent, FullyLit>_stddev +2.4354 +2.4427 10 35 11 36 Render<RightTrapezoid, Transparent, FullyLit>_cv +2.4433 +2.4505 0 0 0 0 Render<RightTrapezoid, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTrapezoid, Transparent, FullyDark>_mean -0.2247 -0.2247 40942 31742 40936 31736 Render<RightTrapezoid, Transparent, FullyDark>_median -0.2241 -0.2240 40904 31739 40895 31734 Render<RightTrapezoid, Transparent, FullyDark>_stddev -0.3455 -0.3546 165 108 167 108 Render<RightTrapezoid, Transparent, FullyDark>_cv -0.1558 -0.1676 0 0 0 0 Render<RightTrapezoid, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10 Render<RightTrapezoid, Transparent, PartiallyLit>_mean -0.0908 -0.0908 74269 67523 74256 67512 Render<RightTrapezoid, Transparent, PartiallyLit>_median -0.0898 -0.0897 74196 67536 74176 67523 Render<RightTrapezoid, Transparent, PartiallyLit>_stddev -0.6590 -0.6568 147 50 146 50 Render<RightTrapezoid, Transparent, PartiallyLit>_cv -0.6250 -0.6225 0 0 0 0 BM_RenderBlackTile_pvalue 0.0539 0.0539 U Test, Repetitions: 10 vs 10 BM_RenderBlackTile_mean -0.0188 -0.0188 125 123 125 123 BM_RenderBlackTile_median -0.0263 -0.0264 126 122 125 122 BM_RenderBlackTile_stddev +1.0907 +1.0966 1 3 1 3 BM_RenderBlackTile_cv +1.1307 +1.1368 0 0 0 0 OVERALL_GEOMEAN -0.0207 -0.0207 0 0 0 0 ```
7 months ago
libdevilutionx_dun_render
libdevilutionx_surface
libdevilutionx_file_util
libdevilutionx_format_int
libdevilutionx_game_mode
libdevilutionx_gendung
libdevilutionx_headless_mode
libdevilutionx_ini
libdevilutionx_init
libdevilutionx_items
libdevilutionx_level_objects
libdevilutionx_light_render
libdevilutionx_lighting
libdevilutionx_monster
libdevilutionx_mpq
libdevilutionx_multiplayer
libdevilutionx_options
libdevilutionx_padmapper
libdevilutionx_palette_blending
libdevilutionx_parse_int
libdevilutionx_pathfinding
libdevilutionx_pkware_encrypt
libdevilutionx_player
libdevilutionx_primitive_render
libdevilutionx_quests
libdevilutionx_quick_messages
libdevilutionx_random
libdevilutionx_sound
libdevilutionx_spells
libdevilutionx_stores
libdevilutionx_strings
libdevilutionx_text_render
libdevilutionx_txtdata
libdevilutionx_ticks
libdevilutionx_utf8
libdevilutionx_utils_console
)
if(NOT TARGET_PLATFORM STREQUAL "dos")
target_link_dependencies(libdevilutionx PUBLIC Threads::Threads)
endif()
if(DEVILUTIONX_SCREENSHOT_FORMAT STREQUAL DEVILUTIONX_SCREENSHOT_FORMAT_PNG)
target_link_dependencies(libdevilutionx PUBLIC libdevilutionx_surface_to_png)
endif()
# Use file GENERATE instead of configure_file because configure_file
# does not support generator expressions.
get_property(is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
add_library(libdevilutionx_config INTERFACE)
if(is_multi_config)
set(CONFIG_PATH $<CONFIG>/config.h)
target_include_directories(libdevilutionx_config INTERFACE ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
else()
set(CONFIG_PATH config.h)
target_include_directories(libdevilutionx_config INTERFACE ${CMAKE_CURRENT_BINARY_DIR})
endif()
file(GENERATE OUTPUT ${CONFIG_PATH} CONTENT
"#pragma once
#define PROJECT_NAME \"${PROJECT_NAME}\"
#define PROJECT_VERSION \"${PROJECT_VERSION_WITH_SUFFIX}\"
#define PROJECT_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}
#define PROJECT_VERSION_MINOR ${PROJECT_VERSION_MINOR}
#define PROJECT_VERSION_PATCH ${PROJECT_VERSION_PATCH}
")
if(DISCORD_INTEGRATION)
target_compile_definitions(libdevilutionx PRIVATE DISCORD)
target_link_libraries(libdevilutionx PRIVATE discord discord_game_sdk)
endif()
if(SCREEN_READER_INTEGRATION)
if(WIN32)
target_compile_definitions(libdevilutionx PRIVATE Tolk)
target_link_libraries(libdevilutionx PUBLIC Tolk)
else()
target_include_directories(libdevilutionx PUBLIC ${Speechd_INCLUDE_DIRS})
target_link_libraries(libdevilutionx PUBLIC speechd)
endif()
endif()
if(USE_SDL1)
# No need for SDL_image
elseif(USE_SDL3)
target_link_libraries(libdevilutionx PUBLIC SDL3_image::SDL3_image)
else()
target_link_libraries(libdevilutionx PUBLIC SDL2::SDL2_image)
endif()
if(NOT NONET)
if(NOT DISABLE_TCP)
target_link_libraries(libdevilutionx PUBLIC asio)
endif()
if(PACKET_ENCRYPTION)
target_link_libraries(libdevilutionx PUBLIC sodium)
endif()
endif()
if(NOT NOSOUND AND NOT USE_SDL3)
target_link_libraries(libdevilutionx PUBLIC SDL_audiolib::SDL_audiolib)
endif()
if(NOT NONET AND NOT DISABLE_ZERO_TIER)
if(NOT ANDROID)
target_link_libraries(libdevilutionx PUBLIC zt-static)
else()
target_link_libraries(libdevilutionx PUBLIC zt-shared)
endif()
endif()
foreach(path ${DEVILUTIONX_PLATFORM_SUBDIRECTORIES})
add_subdirectory(${path})
endforeach()
target_link_dependencies(libdevilutionx PUBLIC ${DEVILUTIONX_PLATFORM_LINK_LIBRARIES})
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9 AND NOT AMIGA)
target_link_libraries(libdevilutionx PUBLIC stdc++fs)
endif()
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
# Assumes libc++ (clang) is used rather than libstdc++ (gcc).
# This is not always true but these are ancient clang versions anyway.
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7)
target_link_libraries(libdevilutionx PUBLIC c++experimental)
elseif(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9)
target_link_libraries(libdevilutionx PUBLIC c++fs)
endif()
endif()