* Fix compilation for windows, setup ambuild
* Add built tier1 and mathlib for win64
* Ensure compilation is working on windows and linux
* Add -fPIC
* Add compiled libs, with optimisation enabled
* Added windows lib
* Fix hl2sdk for windows
* Longs are the devil
* Fix up threadtools functions
* Add updated libs
* Rework lib naming, and package script
* Update lib directory according to new packaging
---------
Co-authored-by: Kenzzer <kenzzer@users.noreply.github.com>
* fix conflicting return type
Example bad compile:
```c
[ 6%] Building CXX object CMakeFiles/TFTrue.dir/AutoUpdater.cpp.o
In file included from /home/steph/TFTrue/SDK.h:38,
from /home/steph/TFTrue/AutoUpdater.h:27,
from /home/steph/TFTrue/AutoUpdater.cpp:19:
/home/steph/TFTrue/hl2sdk-tf2/game/shared/gamemovement.h:45:24: error: conflicting return type specified for ‘virtual const Vector& CGameMovement::GetPlayerMins(bool) const’
45 | virtual const Vector& GetPlayerMins( bool ducked ) const;
| ^~~~~~~~~~~~~
In file included from /home/steph/TFTrue/hl2sdk-tf2/game/shared/gamemovement.h:15,
from /home/steph/TFTrue/SDK.h:38,
from /home/steph/TFTrue/AutoUpdater.h:27,
from /home/steph/TFTrue/AutoUpdater.cpp:19:
/home/steph/TFTrue/hl2sdk-tf2/game/shared/igamemovement.h:122:17: note: overridden function is ‘virtual Vector IGameMovement::GetPlayerMins(bool) const’
122 | virtual Vector GetPlayerMins( bool ducked ) const = 0;
| ^~~~~~~~~~~~~
In file included from /home/steph/TFTrue/SDK.h:38,
from /home/steph/TFTrue/AutoUpdater.h:27,
from /home/steph/TFTrue/AutoUpdater.cpp:19:
/home/steph/TFTrue/hl2sdk-tf2/game/shared/gamemovement.h:46:24: error: conflicting return type specified for ‘virtual const Vector& CGameMovement::GetPlayerMaxs(bool) const’
46 | virtual const Vector& GetPlayerMaxs( bool ducked ) const;
| ^~~~~~~~~~~~~
In file included from /home/steph/TFTrue/hl2sdk-tf2/game/shared/gamemovement.h:15,
from /home/steph/TFTrue/SDK.h:38,
from /home/steph/TFTrue/AutoUpdater.h:27,
from /home/steph/TFTrue/AutoUpdater.cpp:19:
/home/steph/TFTrue/hl2sdk-tf2/game/shared/igamemovement.h:123:17: note: overridden function is ‘virtual Vector IGameMovement::GetPlayerMaxs(bool) const’
123 | virtual Vector GetPlayerMaxs( bool ducked ) const = 0;
| ^~~~~~~~~~~~~
In file included from /home/steph/TFTrue/SDK.h:38,
from /home/steph/TFTrue/AutoUpdater.h:27,
from /home/steph/TFTrue/AutoUpdater.cpp:19:
/home/steph/TFTrue/hl2sdk-tf2/game/shared/gamemovement.h:47:24: error: conflicting return type specified for ‘virtual const Vector& CGameMovement::GetPlayerViewOffset(bool) const’
47 | virtual const Vector& GetPlayerViewOffset( bool ducked ) const;
| ^~~~~~~~~~~~~~~~~~~
In file included from /home/steph/TFTrue/hl2sdk-tf2/game/shared/gamemovement.h:15,
from /home/steph/TFTrue/SDK.h:38,
from /home/steph/TFTrue/AutoUpdater.h:27,
from /home/steph/TFTrue/AutoUpdater.cpp:19:
/home/steph/TFTrue/hl2sdk-tf2/game/shared/igamemovement.h:124:18: note: overridden function is ‘virtual Vector IGameMovement::GetPlayerViewOffset(bool) const’
124 | virtual Vector GetPlayerViewOffset( bool ducked ) const = 0;
| ^~~~~~~~~~~~~~~~~~~
gmake[2]: *** [CMakeFiles/TFTrue.dir/build.make:82: CMakeFiles/TFTrue.dir/AutoUpdater.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:95: CMakeFiles/TFTrue.dir/all] Error 2
gmake: *** [Makefile:103: all] Error 2
```
This should've been updated when this was updated:
5ad032f350
* part 2
The swap() function provided in the MathLib header was renamed to V_swap in recent Source SDK versions (e.g. 2013) to avoid causing ambiguity problems with std::swap(). But older SDK versions (such as TF2) lack this change, as they predate it.
The ambiguity between MathLib's swap() and std::swap() causes considerable problems when using newer features of C++ (such as std::unique_ptr) which internally call swap() in an unqualified manner to implement move semantics:
/usr/include/c++/5.2.0/bits/unique_ptr.h:342:6: error: call of overloaded ‘swap(MyType*&, MyType*&)’ is ambiguous
/usr/include/c++/5.2.0/bits/move.h:176:5: note: candidate: void std::swap(_Tp&, _Tp&) [with _Tp = MyType*]
hl2sdk-tf2/public/mathlib/mathlib.h:611:18: note: candidate: void swap(T&, T&) [with T = MyType*]
This patch backports the swap() -> V_swap() rename from the 2013 SDK version to the TF2 SDK version, so that the TF2 SDK can be used in conjunction with C++11 features such as std::unique_ptr without difficulty.
More information on why swap() isn't called in a namespace-qualified manner by standard library functions:
http://en.cppreference.com/w/cpp/language/adl#Notes