doodle/Building.md
Noah Petherbridge f76ba6fbb7 WIP: MsgPack stubs, Level Filesystem Module
* Add some encoding/decoding functions for binary msgpack format for
  levels and doodads. Currently it writes msgpack files that can be
  decoded and printed by Python (mp2json.py) but it can't re-read from
  the binary format. For now, levels will continue to write in JSON
  format.
* Add filesystem abstraction functions to the balance/ package to search
  multiple paths to find Levels and Doodads, to make way for
  system-level doodads.
2019-05-06 12:41:46 -07:00

3.0 KiB

Building Doodle

Makefile commands for Linux:

  • make setup: install Go dependencies and set up the build environment
  • make build: build the Doodle and Doodad binaries to the bin/ folder.
  • make build-free: build the shareware binaries to the bin/ folder. See Build Tags below.
  • make build-debug: build a debug binary (not release-mode) to the bin/ folder. See Build Tags below.
  • make run: run a local dev build of Doodle in debug mode
  • make guitest: run a local dev build in the GUITest scene
  • make test: run the test suite
  • make dist: produce a zipped release tarball and zip file for your current environment and output into the dist/ folder.
  • make docker: run all the Dockerfiles from the docker/ folder to produce dist builds for Debian, Fedora and Ubuntu. You may also run these builds individually:
    • make docker.ubuntu
    • make docker.debian
    • make docker.fedora
  • make clean: clean all build artifacts

Build Tags

shareware

Files ending with _free.go are for the shareware release as opposed to _paid.go for the full version.

Builds the game in the free shareware release mode.

Run make build-free to build the shareware binary.

Shareware releases of the game have the following changes compared to the default (release) mode:

  • No access to the Doodad Editor scene in-game (soft toggle)

developer

Files ending with _developer.go are for the developer build as opposed to _release.go for the public version.

Developer builds support extra features over the standard release version:

  • Ability to write the JSON file format for Levels and Doodads.

Run make build-debug to build a developer version of the program.

Linux

Dependencies are Go, SDL2 and SDL2_ttf:

# Fedora
sudo dnf -y install golang SDL2-devel SDL2_ttf-devel

# Ubuntu and Debian
sudo apt -y install golang libsdl2-dev libsdl2-ttf-dev

Windows Cross-Compile from Linux

Install the Mingw C compiler:

# Fedora
sudo dnf -y install mingw64-gcc  # for 64-bit
sudo dnf -y install mingw32-gcc  # for 32-bit

# Arch Linux
pacman -S mingw-w64

Download the SDL2 Mingw development libraries here and SDL2_TTF from here.

Extract each and copy their library folder into the mingw path.

# e.g. /usr/x86_64-w64-mingw32 is usually the correct path, verify on e.g.
# Fedora with `rpm -ql mingw64-filesystem`
tar -xzvf SDL2_ttf-devel-2.0.15-mingw.tar.gz
cd SDL_ttf-2.0.15
sudo cp -r x86_64-w64-mingw32 /usr

Make and set permissions for Go to download the standard library for Windows:

mkdir /usr/lib/golang/pkg/windows_amd64
chown your_username /usr/lib/golang/pkg/windows_amd64

And run make mingw to build the Windows binary.

Windows DLLs

For the .exe to run it will need SDL2.dll and such.

# SDL2.dll and SDL2_ttf.dll
cp /usr/x86_64-w64-mingw32/bin/SDL*.dll bin/

SDL2_ttf requires libfreetype, you can get its DLL here: https://github.com/ubawurinna/freetype-windows-binaries