See the files under "doc/txt" or "doc/html" for more information.
Will Day
willday@metamod.org
http://www.metamod.org
The commit history is not final as it is not in perfect condition.
I'm still working on this, and I apologize in advance for any problems with merge conflicts. :P
- This is a fork and I'm waiting for a response from the upstream (Bots-United/metamod-p) maintainers. If they responds to my initial PR, I will coordinate further changes with them for the correct phased meging into the upstream. If I am asked to edit, split or remove some commits, then it is quite possible that I will do it.
- "Linuxification" of many files (line endings, extra/missing/trailing spaces, etc.).
In my opinion, the basic things that can make it more difficult to code review in various utilities should be eliminated. But I'm not sure yet that the maintainers will accept it. - This file (README.md).
- Added
CMake
build system. - Added
github actions
workflow.- automated multiplatform builds.
- automated packages generation (watch artifacts in workflow run).
- automated uploading release assets (watch assets in demo release).
- Fixed for modern compilers.
- Fixed for
x86_64
. - Fixed lot of warnings.
- Fixed some dangerous/dirty code.
- Temporarily add a
__cxa_throw
handler while themetamod
is being compiled with-fno-exceptions
.
To stay in legacy mode for now (don't applylibstdc++
and exceptions), there is a workaround - add__cxa_throw
handler intometamod.dll
|so
that will call::std::terminate
(and::std::abort
).
A long time ago in a galaxy far, far away....-fno-exceptions
made sense.
Now there will be no overhead for exception handling. In any case,-fno-exceptions
is correct to use when code only usesnoexcept
calls. There are lot of places in themetamod
where exceptions can still be thrown (for example, allocation overnew
insteadmalloc
), but-fno-exceptions
will cause them to be ignored. There is no guarantee that the engine or somemod/gamedll
will not catch and process it without taking into account the specifics of themetamod
. There is no guarantee that the engine or some mod/gamedll will not throw exception. Which can break "exception-safe" policy. - Kill
c++
+c
Frankenstein. It's better to usec++
. Migrate as carefully as possible (preferably lossless).
In today's world, the correct use oflibstdc++
and exceptions will not give overhead.
libstdc++
can be linked as a whole static archive (-static-libstdc++
).- Find
c
code and migrate toc++
as possible. - Fix code and remove
-fno-exceptions
option and__cxa_throw
workaround. - Fix code and remove
-Wno-write-strings
option (splitchar *
andconst char *
as possible).
- Find
- Fix for old versions of
mingw
compilers.- Find alternative of compile definitions for
windres
. - Find alternative alternative for
-Wl,--add-stdcall-alias
.
- Find alternative of compile definitions for
- Fix for
MSVC
(i686
&x86_64
) compiler. - Fix for
CLang
andintel
compilers...
Not critical. Do not rush. It will be boring and sad... =( - Rebase & push into upstream.