
This helps some cmake analysers and the like to better get an idea of how wut works, while having the same effect in terms of actual compiling.
wut
Let's try make a Wii U Toolchain / SDK for creating rpx/rpl.
Licensed under the terms of the GNU General Public License, version 2 or later (GPLv2+).
Install
Grab the latest release extract to a folder, then export that folder as WUT_ROOT.
For example:
wget https://github.com/decaf-emu/wut/releases/download/1.0.0-alpha/wut.linux64.7z
mkdir wut && cd wut
7z x ../wut.linux64.7z
export WUT_ROOT=$PWD
Usage
See samples for examples of how to use wut.
The share/wut.cmake file provides several helpers for your build:
wut_create_rpx(target.rpx executable)
- Will create an .rpx file from your CMake target generated byadd_executable
wut_enable_newlib(target)
- Links against the wut implementation of newlib, this is useful for using any function from the C standard librarywut_enable_stdcpp(target)
- Links against the wut implementation of stdcpp, this is useful for using any function from the C++ standard library. This will call wut_enable_newlib if you have not already done so.wut_default_malloc(target)
- By default newlib will allocate 90% of the default heap for use with sbrk & malloc, if this is unacceptable to you then you should use this as it replaces the newlib malloc functions which ones which redirect to the CafeOS default heap functions such as MEMAllocFromDefaultHeap.wut_enable_devoptab(target)
- This links in wutdevoptab which is useful for using the libc file functions with paths such asfopen("sd:/file.txt", "r")
to read files from the sd card
A minimal CMakeLists.txt file for a C++ project might look like:
cmake_minimum_required(VERSION 3.2)
project(helloworld_cpp CXX)
include("${WUT_ROOT}/share/wut.cmake" REQUIRED)
add_executable(helloworld_cpp
main.cpp)
wut_enable_stdcpp(helloworld_cpp)
wut_create_rpx(helloworld_cpp.rpx helloworld_cpp)
Which you would compile with
export DEVKITPPC=/opt/devkitpro/devkitPPC
export WUT_ROOT=<path/to/install>
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=$WUT_ROOT/share/wut.toolchain.cmake ../
make
Building
Requires:
- A modern compiler with C++14/17 support
- CMake
- zlib
- devkitPPC r31+
Building on Windows
Use WSL and then follow the Linux instructions.
For example, if you installed Ubuntu 18.04 then you might setup your environment like:
sudo apt install cmake zlib1g-dev gcc g++ build-essential
wget https://github.com/devkitPro/pacman/releases/download/devkitpro-pacman-1.0.1/devkitpro-pacman.deb
sudo dpkg -i devkitpro-pacman.deb
sudo ln -s /proc/mounts /etc/mtab
sudo dkp-pacman -S devkitPPC wiiload
Building on Linux / MacOS
export DEVKITPPC=/opt/devkitpro/devkitPPC
git clone --recursive https://github.com/decaf-emu/wut.git
cd wut
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=<path/to/install> ../
make install
export WUT_ROOT=<path/to/install>
Then for any wut project you want to build you must use the wut.toolchain.cmake script:
cd ../samples/helloworld
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=$WUT_ROOT/share/wut.toolchain.cmake ../
make
Description
Languages
C
88.5%
C++
9.7%
CMake
1%
Makefile
0.7%
Assembly
0.1%