diff --git a/build/premake/premake5.lua b/build/premake/premake5.lua index b86e00a9d1..a182971c14 100644 --- a/build/premake/premake5.lua +++ b/build/premake/premake5.lua @@ -691,6 +691,8 @@ function setup_all_libs () "sdl", "boost", -- dragged in via server->simulation.h->random and NetSession.h->lockfree "fmt", + "libxml2", + "iconv", } if not _OPTIONS["without-miniupnpc"] then table.insert(extern_libs, "miniupnpc") @@ -780,6 +782,8 @@ function setup_all_libs () "boost", "spidermonkey", "fmt", + "libxml2", + "iconv", } setup_static_lib_project("simulation2", source_dirs, extern_libs, {}) @@ -861,6 +865,8 @@ function setup_all_libs () "fmt", "freetype", "icu", + "libxml2", + "iconv", } if not _OPTIONS["without-nvtt"] then table.insert(extern_libs, "nvtt") @@ -877,6 +883,8 @@ function setup_all_libs () "sdl", -- key definitions "spidermonkey", "fmt", + "libxml2", + "iconv", } setup_static_lib_project("atlas", source_dirs, extern_libs, {}) @@ -898,6 +906,7 @@ function setup_all_libs () "icu", "iconv", "fmt", + "libxml2", } if not _OPTIONS["without-audio"] then table.insert(extern_libs, "openal") diff --git a/source/lib/posix/posix.h b/source/lib/posix/posix.h index 9073942223..230c454e71 100644 --- a/source/lib/posix/posix.h +++ b/source/lib/posix/posix.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2020 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the @@ -93,6 +93,8 @@ need only be renamed (e.g. _open, _stat). #define strncasecmp _strnicmp #define wcscasecmp _wcsicmp #define wcsncasecmp _wcsnicmp +#else +#include // IWYU pragma: export #endif #if OS_MACOSX diff --git a/source/ps/XMB/XMBData.cpp b/source/ps/XMB/XMBData.cpp index 54104b59ef..26b28045f9 100644 --- a/source/ps/XMB/XMBData.cpp +++ b/source/ps/XMB/XMBData.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -17,9 +17,16 @@ #include "precompiled.h" -#include "lib/byte_order.h" // FOURCC_LE +#include "XMBData.h" + +#include "lib/debug.h" +#include "lib/posix/posix.h" +#include "lib/secure_crt.h" +#include "lib/types.h" #include "ps/XMB/XMBStorage.h" -#include "ps/XML/Xeromyces.h" + +#include +#include template static inline T read(const void* ptr) diff --git a/source/ps/XMB/XMBData.h b/source/ps/XMB/XMBData.h index 06185ecca2..b3467cd18e 100644 --- a/source/ps/XMB/XMBData.h +++ b/source/ps/XMB/XMBData.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -82,15 +82,14 @@ XMB_Text { #include "ps/CStr.h" -#include +#include +#include #include -class XMBStorage; - +class XMBAttributeList; class XMBElement; class XMBElementList; -class XMBAttributeList; - +class XMBStorage; class XMBData { diff --git a/source/ps/XMB/XMBStorage.cpp b/source/ps/XMB/XMBStorage.cpp index 57ad686704..35aac7a17d 100644 --- a/source/ps/XMB/XMBStorage.cpp +++ b/source/ps/XMB/XMBStorage.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -19,17 +19,30 @@ #include "XMBStorage.h" +#include "lib/debug.h" #include "lib/file/io/write_buffer.h" #include "lib/file/vfs/vfs.h" #include "ps/CLogger.h" #include "scriptinterface/Object.h" #include "scriptinterface/ScriptConversions.h" -#include "scriptinterface/ScriptExtraHeaders.h" #include "scriptinterface/ScriptInterface.h" +#include "scriptinterface/ScriptRequest.h" +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include #include #include +#include +#include const char* XMBStorage::HeaderMagicStr = "XMB0"; const char* XMBStorage::UnfinishedHeaderMagicStr = "XMBu"; diff --git a/source/ps/XMB/XMBStorage.h b/source/ps/XMB/XMBStorage.h index d5687f21ab..9bb4375624 100644 --- a/source/ps/XMB/XMBStorage.h +++ b/source/ps/XMB/XMBStorage.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -18,9 +18,15 @@ #ifndef INCLUDED_XMBSTORAGE #define INCLUDED_XMBSTORAGE -#include "scriptinterface/ScriptForward.h" +#include "lib/types.h" +#include +#include +#include #include +#include + +class ScriptInterface; typedef struct _xmlDoc xmlDoc; typedef xmlDoc* xmlDocPtr; diff --git a/source/ps/XML/RelaxNG.cpp b/source/ps/XML/RelaxNG.cpp index d8eb5f75a5..6380e95f4d 100644 --- a/source/ps/XML/RelaxNG.cpp +++ b/source/ps/XML/RelaxNG.cpp @@ -19,17 +19,24 @@ #include "RelaxNG.h" +#include "lib/code_annotation.h" #include "lib/timer.h" -#include "lib/utf8.h" +#include "lib/types.h" #include "ps/CLogger.h" #include "ps/CStr.h" +#include "ps/Errors.h" #include "ps/Filesystem.h" +#include #include #include +#include +#include #include +#include #include #include +#include TIMER_ADD_CLIENT(xml_validation); diff --git a/source/ps/XML/RelaxNG.h b/source/ps/XML/RelaxNG.h index 467d2a0ae1..f7edeef13e 100644 --- a/source/ps/XML/RelaxNG.h +++ b/source/ps/XML/RelaxNG.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -19,8 +19,12 @@ #define INCLUDED_RELAXNG #include "lib/file/vfs/vfs.h" +#include "lib/file/vfs/vfs_path.h" #include "maths/MD5.h" +#include +#include + typedef struct _xmlRelaxNG xmlRelaxNG; typedef xmlRelaxNG *xmlRelaxNGPtr; typedef struct _xmlDoc xmlDoc; diff --git a/source/ps/XML/XMLWriter.cpp b/source/ps/XML/XMLWriter.cpp index b74e7bc88e..e0d687d0d5 100644 --- a/source/ps/XML/XMLWriter.cpp +++ b/source/ps/XML/XMLWriter.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -19,14 +19,23 @@ #include "XMLWriter.h" -#include "ps/CLogger.h" -#include "ps/Filesystem.h" -#include "ps/XML/Xeromyces.h" -#include "lib/utf8.h" +#include "lib/alignment.h" #include "lib/allocators/shared_ptr.h" -#include "lib/sysdep/cpu.h" +#include "lib/debug.h" +#include "lib/path.h" +#include "lib/status.h" +#include "lib/types.h" +#include "lib/utf8.h" #include "maths/Fixed.h" +#include "ps/CLogger.h" +#include "ps/XMB/XMBData.h" +#include "ps/XMB/XMBStorage.h" +#include "ps/XML/Xeromyces.h" +#include +#include +#include +#include // TODO (maybe): Write to the file frequently, instead of buffering // the entire file, so that large files get written faster. diff --git a/source/ps/XML/XMLWriter.h b/source/ps/XML/XMLWriter.h index b7d6e3402d..89db1718a7 100644 --- a/source/ps/XML/XMLWriter.h +++ b/source/ps/XML/XMLWriter.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -62,6 +62,7 @@ */ #include "lib/file/vfs/vfs.h" +#include "lib/file/vfs/vfs_path.h" #include "ps/CStr.h" class XMBElement; diff --git a/source/ps/XML/Xeromyces.cpp b/source/ps/XML/Xeromyces.cpp index e2e313c2d5..ed4b2e4d41 100644 --- a/source/ps/XML/Xeromyces.cpp +++ b/source/ps/XML/Xeromyces.cpp @@ -17,23 +17,29 @@ #include "precompiled.h" -#include -#include -#include -#include -#include -#include - -#include "maths/MD5.h" -#include "ps/CacheLoader.h" -#include "ps/CLogger.h" -#include "ps/Filesystem.h" - -#include "RelaxNG.h" #include "Xeromyces.h" +#include "RelaxNG.h" +#include "lib/code_annotation.h" +#include "lib/debug.h" +#include "lib/file/vfs/vfs.h" +#include "lib/path.h" +#include "lib/status.h" +#include "maths/MD5.h" +#include "ps/CLogger.h" +#include "ps/CStr.h" +#include "ps/CacheLoader.h" +#include "ps/Filesystem.h" + +#include #include +#include +#include +#include +#include +#include #include +#include static std::mutex g_ValidatorCacheLock; static std::map g_ValidatorCache; diff --git a/source/ps/XML/Xeromyces.h b/source/ps/XML/Xeromyces.h index de6d2ca1b7..4ed79d1aa0 100644 --- a/source/ps/XML/Xeromyces.h +++ b/source/ps/XML/Xeromyces.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -25,19 +25,19 @@ #define INCLUDED_XEROMYCES #include "ps/Errors.h" -ERROR_GROUP(Xeromyces); -ERROR_TYPE(Xeromyces, XMLOpenFailed); -ERROR_TYPE(Xeromyces, XMLParseError); -ERROR_TYPE(Xeromyces, XMLValidationFailed); - #include "ps/Singleton.h" #include "ps/XMB/XMBData.h" #include "ps/XMB/XMBStorage.h" -#include "lib/file/vfs/vfs.h" +#include class RelaxNGValidator; +ERROR_GROUP(Xeromyces); +ERROR_TYPE(Xeromyces, XMLOpenFailed); +ERROR_TYPE(Xeromyces, XMLParseError); +ERROR_TYPE(Xeromyces, XMLValidationFailed); + class CXeromyces : public XMBData { friend class TestXMBData;