I present to you the most highly functional version of Abuse on the GNU/Linux platform:
https://github.com/fluffrabbit/Abuse_LinuxIt compiles and runs flawlessly, albeit this repo (like its parent) does not include sounds. All I did was update and patch everything in the SDL 2 version. The media is the same as the parent repo.
Can someone confirm whether or not my repo contains non-free media?EDIT: It's free as a bird now, and this bird you
cannot can change...
- Technical notes for those who are curious -
The Abuse SDL2 fork was developed on Windows, which broke the Linux builds. I changed the following to get it to compile on Linux:
1. Some extremely common OpenGL commands like glEnable and glViewport were getting undefined references in video.cpp. The problem had something to do with the deprecated GLee dependency. AFAIK neither OpenGL nor GLee were being linked to the executable. It probably worked on Windows, but it didn't work for me. I replaced GLee with header-only Glad 2. (Configured for OpenGL 2.0 as a potential jumping-off point for a conversion to GLES 2.)
2. The custom Lisp interpreter, imlib, and compiled.cpp/.h used fixed-width integers, and lcache.cpp additionally used uintptr_t. It's stupid difficult trying to get CMake to use modern C++ (now I see why people hate CMake) so I replaced the special integer types with their older equivalents. For some reason, other parts of the codebase get away with using fixed-width integers. In any case, things are now consistent with what CMake expects.
3. I changed #include <SDL_config.h> to #include <SDL2/SDL_config.h> in a few places. Probably a holdover from SDL 1. This peculiar lack of a directory for the SDL headers is found in other files, but it only seemed to be a problem when the include file was SDL_config.h.
4. I updated abuse-tool from OpenCV 2 to OpenCV 3 and added CMake linker targets for opencv_core, opencv_highgui, and opencv_imgcodecs.
5. Changed ASSETDIR in the root CMakeLists to "." rather than a system path (which was probably breaking non-Unix platforms anyways)