Skip to content

Prerequisites and Dependencies for 0.142

Vitorio edited this page Nov 3, 2013 · 1 revision

Prerequisites and Dependencies

JSMESS is a complex project with many moving parts. This document attempts to explain all of the tools, libraries, etc. that you need installed in order to build JSMESS.

Emscripten uses these to work its magic. As this is the latest version of LLVM and Clang, chances are you will need to compile it from scratch.

Too lazy to read the LLVM build instructions? Make sure you have g++ installed (not just gcc!) and run these commands:

wget http://llvm.org/releases/3.2/llvm-3.2.src.tar.gz
wget http://llvm.org/releases/3.2/clang-3.2.src.tar.gz
tar xf llvm-3.2.src.tar.gz
cd llvm-3.2.src/tools
tar xf ../../clang-3.2.src.tar.gz
mv clang-3.2.src clang
cd ..
./configure
make
sudo make install

Follow the official instructions for installing the latest version of NodeJS. Emscripten expects a recent version of node, and you might have problems with old versions. Keep your node up to date to match your emscripten releases.

https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

Emscripten

We have Emscripten as a submodule in our git repository, but git won't grab it unless you tell it to. Run this command from the root directory of the repository to grab it:

git submodule update --init --recursive

Then, run emcc to generate a configuration file:

cd third_party/emscripten
./emcc

Run emcc one more time to ensure that it is working correctly. If it complains, edit ~/.emscripten to point to your LLVM installation and Emscripten directory.

Note that we pin to a particular, tested build of emscripten, rather than just follow master. It's necessary to occasionally update emscripten and test it against a bunch of systems so we don't get too far out of date.

Java

Java is required to run the Closure compiler.

A Game

You'll need at least one game for the platform you want to play.

MAME / MESS Dependencies

In order to build the buildtools, MAME / MESS requires you to have the following installed:

  • sdl
  • sdl_ttf
  • libfontconfig1-dev

System-specific Dependencies

Each system has a set of bios files that are required for it to function properly in MESS. You should place these files into the bios folder. Each system and system peripheral in MESS typically has a standardized zip file associated with it.

To figure out what a system needs, check out the file make/systems/SYSTEMNAMEHERE.mak. For example, here's where we specify the bios files that Atari 800 requires: https://github.com/jsmess/jsmess/blob/no_cothreads/make/systems/a800.mak#L6