Refactor resamplers in such a way that main module only interact with
them through a resampler_interface which is agnostic to implementation
details.
Also, for all resamplers, internal state is dynamically allocated, and
no longer relies on global variables.
Unlike the Mupen64Plus Core, which is sensitive to the architecture
it's compiled for due to its just-in-time compilers, this project does
not require architecture-specific glue code, only operating system
checks to load dynamic libraries and the presence of a well-behaving
port of SDL on the platform.
M64P_BIG_ENDIAN is not used for any decisions in this plugin, either.
Delete the big-endian processor checks.
The current version of SDL is 2.0.3. All new releases of distributions contain
this library already. Current Linux distributions and OpenBSD even backporting
patches from Mupen64Plus 2.1 repo to use SDL 2. Android and other mobile
platform don't have support for legacy SDL 1.2.
People like Anthony J. Bentley and Riley Labrecque already requested
a new release of Mupen64Plus 2.1 with SDL2
The *.d depends files for make just list the files used when building an
object file. Removing a file listed in such a dependency file causes make to
search for a way to recreate it. This usually cannot work because these files
aren't autogenerated.
The gcc option -MP can be used to generate empty rule for these files. Removing
a file in a dependency list will then execute this empty rule and continue with
the execution of the creation of the object file. This compilation process will
then automatically correct the dependency file.
n.pepinpe requested in #540 to allow overwriting the automatically searched
CFLAGS and LIBS for used libraries. This should allow distributors to set the
build configuration without patching the makefile. This is important for
systems were pkg-config or sdl-config aren't normally used.
n.pepinpe requested in #540 to allow overwriting the automatically searched
CFLAGS and LIBS for used libraries. This should allow distributors to set the
build configuration without patching the makefile. This is important for
systems were pkg-config or sdl-config aren't normally used.
The GCC introduced Link-time optimization in GCC 4.5 (2010-04-14). This should
be long enough available that interested users have upgraded to a compiler
supporting it.
The MSVC project already enabled WholeProgramOptimization since a long time.
Enabling it by default in GCC seems to be equally valid.
The GCC manual states for different parameters that the options for compilation
must also be used when linking. The options for compilation are stored in
CFLAGS and added to LINK.o to fix the behavior.
Option which need this are for example -fPIC/-fPIE or -flto.
The POSTFIX make option is useful for distributions to compile different
versions of the plugin in parallel. The object files will be stored in a
directory with the postfix appended and the linker result will also have this
postfix appended.
The CROSS_COMPILE make option can be used to automatically prepend the prefix
to all build relevant tools to seamlessly allow cross compilation without
setting each tool name separately.
Cross compiling for MinGW32 would can be done using
$ make -C projects/unix/ CROSS_COMPILE=i686-pc-mingw32- HOST_CPU=i686 UNAME=MINGW
- Bugfix: Don't assume OSS is installed in all linux systems.
- Bugfix: Some combinations of VolumeSetLevel and VolumeMute caused VolumeGetString to return Mute when not muted
- Make SDL volume handling the default, since OSS is no longer included in the kernel.
- Minor refactoring of volume handling code.
Personally, I would drop OSS support altogether, since it's deprecated (and some 'user-friendly' distros don't have it enabled by default, e.g. Ubuntu), and it changes the master volume level and 'remembers' it when muted (what if two programs did this?).