WiiUPluginSystem/plugins/example_plugin_cpp
2023-12-21 17:22:31 +01:00
..
src StorageAPI improvements 2023-12-21 17:22:31 +01:00
.clang-format Example: Update the existing example_plugin and add C++ example plugin 2023-12-16 17:26:45 +01:00
Dockerfile Example: Update the existing example_plugin and add C++ example plugin 2023-12-16 17:26:45 +01:00
Makefile Example: Update the existing example_plugin and add C++ example plugin 2023-12-16 17:26:45 +01:00
README.md Example: Update the existing example_plugin and add C++ example plugin 2023-12-16 17:26:45 +01:00

Example plugin

This is just a simple example plugin which can be used as a template. The plugin logs the FSOpenFile calls via UDP (Only when build via make DEBUG=1).

The logging can be enabled/disabled via the WUPS Config menu (press L, DPAD Down and Minus on the GamePad, Pro Controller or Classic Controller).

Installation

([ENVIRONMENT] is a placeholder for the actual environment name.)

  1. Copy the file ExamplePlugin.wps into sd:/wiiu/environments/[ENVIRONMENT]/plugins.
  2. Requires the WiiUPluginLoaderBackend in sd:/wiiu/environments/[ENVIRONMENT]/modules.

Start the environment (e.g Aroma) and the backend should load the plugin.

Building

For building you need:

Install them (in this order) according to their README's. Don't forget the dependencies of the libs itself.

Then you should be able to compile via make (with no logging) or make DEBUG=1 (with logging).

Buildflags

Logging

Building via make only logs errors (via OSReport). To enable logging via the LoggingModule set DEBUG to 1 or VERBOSE.

make Logs errors only (via OSReport).
make DEBUG=1 Enables information and error logging via LoggingModule.
make DEBUG=VERBOSE Enables verbose information and error logging via LoggingModule.

If the LoggingModule is not present, it'll fallback to UDP (Port 4405) and CafeOS logging.

Building using the Dockerfile

It's possible to use a docker image for building. This way you don't need anything installed on your host system.

# Build docker image (only needed once)
docker build . -t example-plugin-builder

# make 
docker run -it --rm -v ${PWD}:/project example-plugin-builder make DEBUG=1

# make clean
docker run -it --rm -v ${PWD}:/project example-plugin-builder make clean

Format the code via docker

docker run --rm -v ${PWD}:/src ghcr.io/wiiu-env/clang-format:13.0.0-2 -r ./src -i