dethrace/docs/PORTING.md

2.1 KiB

Porting Dethrace to other systems

Operating Systems

Assuming an operating system called foo, follow the steps to add support for it.

  1. Add a new file os/foo.h and implement the required functions defined in os.h:
  • OS_GetTime
  • OS_Sleep
  • OS_Basename
  • OS_GetFirstFileInDirectory
  • OS_GetNextFileInDirectory
  • OS_IsDebuggerPresent
  • OS_InstallSignalHandler
  1. Update src/harness/CMakeLists.h and add a new conditional section for "os/foo.h", based on existing conditions for Windows, MacOS etc.

For example:

...
elseif( _FOO_ )
target_sources(harness PRIVATE
    os/foo.c
)
...

IO Platform (windowing / input / rendering)

An IOPlatform in dethrace implements windowing and input handling, and points to a renderer.

The default IO platform is SDL_OpenGL, which uses SDL for windowing and input, and OpenGL for rendering. See io_platforms/sdl_gl.c.

To add a new IOPlatform:

  1. Create io_platforms/my_platform.c file and implement the required functions defined in io_platforms/io_platform.h:
  • Window_Create
  • Window_PollEvents
  • Window_Swap
  • Input_GetKeyMap
  • Input_IsKeyDown

Window_Create returns a tRenderer*, which must implement the interface defined in renderers/renderer.h. See renderers/gl for an example.

  1. Add a new conditional section in src/harness/CMakeLists.txt for your new platform

For example:

if (IO_PLATFORM STREQUAL "My_Platform")
    target_sources(harness PRIVATE
        io_platforms/my_platform.c
    )
endif()
  1. Run cmake to update your build with the new platform
cd build
cmake -DIO_PLATFORM=My_Platform ..
  1. Build
cmake --build .