mirror of https://github.com/libsdl-org/SDL
46 lines
2.2 KiB
Plaintext
46 lines
2.2 KiB
Plaintext
|
You may generate GNU makefiles for building SDL2 and its related test suite by
|
||
|
using the gmake shell script in the Linux/build-scripts folder.
|
||
|
|
||
|
Linux support is currently experimental for the meta-build system. Most of the
|
||
|
progress made on this support happened toward the end of the meta-build system
|
||
|
project, so there is a lot currently missing that could be added in the future.
|
||
|
For the most part, the Linux support works well, but there is a significant
|
||
|
amount of testing needed to verify it can be built in many different
|
||
|
environments.
|
||
|
|
||
|
The Linux project does not target every dependency it should (as seen in the
|
||
|
autotools configure script or in the CMake script), but it does target the
|
||
|
following dependencies:
|
||
|
|
||
|
-D-Bus (required to build Linux at all)
|
||
|
-DLOpen (most of the other dependencies are dependent on this)
|
||
|
-ALSA
|
||
|
-PulseAudio
|
||
|
-ESD
|
||
|
-NAS
|
||
|
-OSS
|
||
|
-X11
|
||
|
-OpenGL
|
||
|
|
||
|
Also, the Linux system should be building the SDL2 library as a shared library,
|
||
|
but it builds it as a static library because of a few premake-related issues.
|
||
|
This is because when the makefile generated by premake tells the linker where to
|
||
|
find the definitions library (libSDL2.o), it also gives a hint to the loader to
|
||
|
find libSDL2.so in the same place, with a relative path. This means in order to
|
||
|
execute the program dynamically linked to SDL2, it's looking in some path like:
|
||
|
|
||
|
"../../SDL2/Build/Debug"
|
||
|
|
||
|
Now, while this path works at the location of the makefile (such as
|
||
|
./tests/testsprite), it does not make sense from the actual location of the
|
||
|
executable (./tests/testsprite/Build/Debug). Furthermore, it's just massively
|
||
|
inconvenient to have a relative path to look for the shared object. Moving
|
||
|
libSDL2.so into the same directory as the executable does not solve this issue.
|
||
|
Unfortunately, premake also does not allow an install target to be created for
|
||
|
the makefiles, which is another one of the major issues related to building SDL2
|
||
|
as a shared library on Linux. Once these problems are solved, this support
|
||
|
should be very straightforward to add to this system in the future.
|
||
|
|
||
|
The Linux system does have both an automated test and cleaning shell files for
|
||
|
running through the entire supported test suite and cleaning up the generated
|
||
|
and built files, respectively.
|