diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 68b62bce7..cb23aa83d 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -179,7 +179,6 @@ set(libdevilutionx_SRCS utils/cl2_to_clx.cpp utils/console.cpp utils/display.cpp - utils/file_util.cpp utils/format_int.cpp utils/language.cpp utils/logged_fstream.cpp @@ -315,6 +314,24 @@ if(SCREEN_READER_INTEGRATION AND WIN32) target_compile_definitions(libdevilutionx PRIVATE Tolk) endif() +add_devilutionx_object_library(libdevilutionx_file_util + utils/file_util.cpp +) +target_link_libraries(libdevilutionx_file_util PRIVATE + DevilutionX::SDL + libdevilutionx_log + ${DEVILUTIONX_PLATFORM_LINK_LIBRARIES} +) + +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 + libdevilutionx_strings +) + add_devilutionx_object_library(libdevilutionx_parse_int utils/parse_int.cpp ) @@ -343,6 +360,7 @@ target_link_libraries(libdevilutionx PUBLIC libsmackerdec simpleini::simpleini tl + libdevilutionx_file_util libdevilutionx_parse_int libdevilutionx_strings libdevilutionx_utf8 diff --git a/Source/utils/log.hpp b/Source/utils/log.hpp index e56414784..45a060d96 100644 --- a/Source/utils/log.hpp +++ b/Source/utils/log.hpp @@ -15,7 +15,7 @@ namespace devilution { // Local definition to fix compilation issue due to header conflict. -[[noreturn]] void app_fatal(std::string_view); +[[noreturn]] extern void app_fatal(std::string_view); enum class LogCategory { Application = SDL_LOG_CATEGORY_APPLICATION, diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 08d02ee1b..0fd8aacca 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -24,7 +24,6 @@ set(tests drlg_l3_test drlg_l4_test effects_test - file_util_test format_int_test inv_test lighting_test @@ -42,6 +41,7 @@ set(tests writehero_test ) set(standalone_tests + file_util_test parse_int_test str_cat_test utf8_test @@ -67,6 +67,10 @@ foreach(test_target ${standalone_tests}) target_include_directories(${test_target} PRIVATE "${PROJECT_SOURCE_DIR}/Source") endforeach() +add_library(app_fatal_for_testing OBJECT app_fatal_for_testing.cpp) +target_sources(app_fatal_for_testing INTERFACE $) + +target_link_libraries(file_util_test PRIVATE libdevilutionx_file_util app_fatal_for_testing) target_link_libraries(parse_int_test PRIVATE libdevilutionx_parse_int) target_link_libraries(str_cat_test PRIVATE libdevilutionx_strings) target_link_libraries(utf8_test PRIVATE libdevilutionx_utf8) diff --git a/test/app_fatal_for_testing.cpp b/test/app_fatal_for_testing.cpp new file mode 100644 index 000000000..fd888865a --- /dev/null +++ b/test/app_fatal_for_testing.cpp @@ -0,0 +1,12 @@ +#include +#include + +namespace devilution { + +[[noreturn]] void app_fatal(std::string_view str) +{ + std::cerr << "app_fatal: " << str << std::endl; + std::abort(); +} + +} // namespace devilution