Summary: Software

This document describes the needed software to build, install and run MysticOS on various platforms.

Topic: Common tools

MysticOS contains some tool components in its source that are needed to make complete builds. Therefore, 
you will need a host compiler besides the various crosscompiling toolchains. A basic posix-like build 
environment is expected. A standard linux development environment will provide all the tools. Under
windows, cygwin is used.

Required tools:
  GNU make - used for all building commands.
  gcc - used for building local tools.
  binutils - dependency for gcc.
  mkdir, touch, cp, rm, echo - Basic unix commands used in almost all build processes. 
  dd - Basic unix command used in image generation
  test, expr - Basic unix commands used in most test processes.

Topic: ia Architecture

To build the ia branch, you need a series of crosscompilers and some image tools as follows.

i386-elf binutils:
  the main cross-assembler and cross-linker. Versions below 2.17 are known to be broken.
  Successful builds have been made with versions 2.17, 2.18 and 2.20.1.
  The configure line used is as follows:
  (...)/binutils-xxx/configure --target=i386-elf --disable-nls

i386-elf gcc:
  The main cross-compiler. There are no known broken versions, although versions below 3.4.4
  have not been tested. There do seem to be some portability issues in versions before 3.4.x. 
  To configure, have i386-elf binutils installed, then run the  following command line 
  (up to 4.2.x):
  (...)/gcc-x.x.x/configure --target=i386-elf --without-headers --with-newlib --enable-languages=c --disable-nls
  Afterwards, run make all-gcc and make install-gcc to install the required components.
  Version 4.3 and later have additional dependencies to gmp and mpfr, which
  you need to build before gcc or supply its source to the configuration
  script of gcc.

FreeBasic 0.24:
  The basic cross-compiler. Since the runtime is contained in the source and is 
  dependent on compiler version, this is the only version you can currently use.
  Depending on your installation, replace the assembler binary bundled with the i386-elf-as, 
  or make a symlink to it as linux-as. The script calls the compiler as fbc-024-pre 
  to allow for multiple installations. Note that currently a development build
  is used to make use of the object-oriented features as there has not been an
  official 0.24 release yet.

Yasm:
  The main assembler. Is used to build the assembly portions of the OS. Version 0.6.0 or
  later is required.

MTools:
  MTools can create and edit FAT images. Required for floppy targets.

mkisofs:
  mkisofs is a tool to compile ISO-9660 compliant cd images. Required for CD targets. 
  Genisoimage is its successor and can be used as a drop-in replacement. (On some hosts
  mkisofs is symlinked to this program)

gzip:
  GZip is used to compress images for use in conjunction with GRUB. Required for the
  pc-multiboot target.

GRUB 0.9x:
  Grub can be used as part of installation instead of the provided bootloader. It is
  called when installing the multiboot target, and it is implied to be pre-installed 
  when using the wmultiboot target.



Topic: ia-32 Architecture

This branch is mostly deprecated. To build, the following tools are needed

i386-elf binutils:
  see <ia Architecture>

i386-elf gcc:
  see <ia Architecture>

Freebasic 0.16:
  An old FB version is used. Replace the as binary as with <ia Architecture>
  Currently called as fbc

Yasm:
  see <ia Architecture>

MTools:
  see <ia Architecture>

mkisofs:
  see <ia Architecture>

GRUB 0.9x:
  Not a part of any build process for this target, but expected to be pre-installed
  on a medium when using the multiboot target.



Topic: m68k Architecture

m68k-elf binutils:
  The main assembler and linker. 2.16 and below lack some required features. There
  seem to be some installation issues with the 2.17 release on some platforms.
  Successful builds have been made with 2.17 and 2.19.1
  The configure line used is as follows:
  (...)/binutils-xxx/configure --target=m68k-elf --disable-nls

m68k-elf gcc:
  The main cross-compiler. There are no known issues other than using 4.3 and later
  have some new dependencies resulting in more work.
  (...)/gcc-x.x.x/configure --target=m68k-elf --without-headers --with-newlib --enable-languages=c --disable-nls
  Afterwards, run make all-gcc and make install-gcc to install the required components.

FreeBasic 0.21:
  The basic cross-compiler. Since the runtime is contained in the source and is heavily 
  dependent on compiler version, this is the only version you can currently use.
  Replace the assembler binary bundled with the i386-elf-as, or put it in the linux 
  cross-compile target. The script calls the compiler as fbc-021 to allow for multiple
  concurrent installations.



Topic: sh4 Architecture

m68k-elf binutils:
  The main assembler and linker. Successful builds have been made with 2.18 and 2.20.1
  The configure line used is as follows:
  (...)/binutils-xxx/configure --target=m68k-elf --disable-nls

m68k-elf gcc:
  The main cross-compiler. There are no known issues other than using 4.3 and later
  have some new dependencies resulting in more work.
  (...)/gcc-x.x.x/configure --target=m68k-elf --without-headers --with-newlib --enable-languages=c --disable-nls
  Afterwards, run make all-gcc and make install-gcc to install the required components.

mkisofs:
  mkisofs is a tool to compile ISO-9660 compliant cd images. Since all supported platforms 
  are currently CD-based, this tool is required by all targets except raw ones.

cdi4dc 0.2b:
  cdi4dc is one of the external tools for making an image that is able to pass the 
  copyright protection mechanisms installed on a dreamcast machine. Unfortunately no
  source is included, and only precompiled windows and linux binaries exist. Required
  for the dreamcast-cdi target. If you want to end up with an usable dreamcast image, you 
  will need this.
