MemoryWatcher only works on Linux and affects emulation determinism due
to scheduling additional events, which causes NetPlay to desync.
Considering that this interface is a rather specialized use case, the
communication with it is kinda crappy *and* it's affecting emulation, I
think it's best to just axe it and come up with a better implementation
of the functionality.
The documentation for setting cache entries dicates that the type must
either be BOOL, FILEPATH, PATH, STRING, or INTERNAL (with those exact
casings). Also, given we properly case it in other places, this is just
consistent.
The general convention for CMake is to use lowercase for commands, and
given we also follow that convention through most CMake files, this just
makes it more consistent.
Thin archives contain pathnames pointing to the object files instead of
full copies of the object files. This significantly reduces the disk
usage when building Dolphin.
Size of *.a files: (gcc-8.1.0, Linux amd64)
- Before: 83,876 KB
- After: 1,876 KB
- Diff: -82,000 KB
The resulting binaries are the same as before.
A similar change was implemented in the Linux kernel v4.8:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a5967db9af51a84f5e181600954714a9e4c69f1f
We have to decide if we want to link to
libGL.so -- legacy
libOpenGL.so -- GLVND
As we use xxxGetProcAddress, we don't care about feature
levels of the linked library, so we're very fine with the
new way.
Allows us to bring includes and relevant libraries into scope by explicitly declaring linkage against the target
as opposed to using a variable. Also removes the dumping of OProfile includes into the top-level directory.
We already use a custom CMakeLists file for xxhash, so we can just make it's headers
public as part of its target interface.
This way, only libraries that link in the xxhash target will see its headers, as opposed
to every target under the top-level directory.
Adjusts Common to use the ICONV_LIBRARIES variable directly and doesn't
append it to the LIBS variable.
After this, there's only one remaining usage where libraries are added
to the LIBS variable, after which it can be removed once the rest of
the targets are migrated off add_dolphin_library
The only place this library is needed (core) is already linked in the core target.
Also make the linkage private to create linkage failures if the dependency isn't
explicitly linked in elsewhere where it should be.
Reduces the dependency on the LIBS variable.
Makes our libraries explicitly link in which libraries they need.
This makes our dependencies explicit and removes the reliance on the
LIBS variable to contain the libraries that they need.