wut/README.md

89 lines
3.2 KiB
Markdown
Raw Normal View History

2019-01-28 19:02:56 +01:00
[![Build Status](https://travis-ci.org/devkitPro/wut.svg)](https://travis-ci.org/devkitPro/wut)
2017-06-02 14:32:58 +02:00
2015-12-27 03:15:51 +01:00
# wut
Let's try make a Wii U Toolchain / SDK for creating rpx/rpl.
2015-12-27 03:18:13 +01:00
Licensed under the terms of the GNU General Public License, version 2 or later (GPLv2+).
2018-06-15 11:45:13 +02:00
## Install
2019-01-27 15:20:17 +01:00
It is recommended to install wut by using the [devkitPro package manager](https://devkitpro.org/wiki/devkitPro_pacman)
2018-06-15 11:45:13 +02:00
2019-01-27 15:20:17 +01:00
For example you might do:
2018-06-15 11:45:13 +02:00
```
2019-01-27 15:20:17 +01:00
sudo dkp-pacman -Syu devkitPPC wut-tools wut
2018-06-15 11:45:13 +02:00
```
2018-06-14 13:26:25 +02:00
## Usage
See [samples](samples) for examples of how to use wut.
The [share/wut.cmake](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 by `add_executable`
- `wut_enable_newlib(target)` - Links against the wut implementation of newlib, this is useful for using any function from the C standard library
- `wut_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 as `fopen("sd:/file.txt", "r")` to read files from the sd card
2018-06-14 13:26:25 +02:00
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)
```
2018-06-14 13:36:10 +02:00
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
```
2018-06-14 13:26:25 +02:00
## Building
Requires:
2018-06-14 10:33:23 +02:00
- CMake
- [devkitPPC](https://devkitpro.org/wiki/Getting_Started)
2017-03-23 13:19:27 +01:00
### Building with devkitPPC
Ensure you have the devkitPPC and wut-tools packages provided by [devkitPro](https://devkitpro.org/wiki/Getting_Started):
2019-01-07 13:21:11 +01:00
```
2019-01-18 17:04:32 +01:00
sudo dkp-pacman -Syu devkitPPC wut-tools
export DEVKITPRO=/opt/devkitpro
2019-01-07 13:21:11 +01:00
export DEVKITPPC=/opt/devkitpro/devkitPPC
2018-06-14 10:33:23 +02:00
```
2019-01-18 17:04:32 +01:00
Then you can build wut like any other CMake project:
```
2019-01-18 17:04:32 +01:00
git clone --recursive https://github.com/devkitPro/wut.git
cd wut
mkdir build && cd build
2018-06-14 10:33:23 +02:00
cmake -DCMAKE_INSTALL_PREFIX=<path/to/install> ../
2017-04-08 09:55:08 +02:00
make install
2018-05-27 13:16:44 +02:00
export WUT_ROOT=<path/to/install>
```
2018-05-23 00:08:13 +02:00
Then for any wut project you want to build you must use the wut.toolchain.cmake script:
```
cd ../samples/helloworld
mkdir build && cd build
2018-06-14 12:46:25 +02:00
cmake -DCMAKE_TOOLCHAIN_FILE=$WUT_ROOT/share/wut.toolchain.cmake ../
make
```
2019-01-18 17:04:32 +01:00
### Building with a locally built wut-tools
If you have locally built wut-tools then just add the directory containing the built binaries to PATH and they should be used instead:
```
export PATH=/path/to/wut-tools/bin:$PATH
cd wut
mkdir build && cd build
cmake ../
make
```