Wiki

Clone wiki

ultima-exodus / Build_Environment

Build Environment Overview

The Exodus Project consists of two types of source code:

  • assembler source code (*.asm files)
  • C source code (*.c, *.h files)

The asm files are assembled using Flat Assembler (fasm) and are intended for a DOS/i386 architecture.

For C source code the Exodus Project supports two architectures: the DOS/i386 architecture and the local machine (aka the build environment). DOS/i386 is the intended execution environment for the upgrades and is therefore the primary architecture of the project. However binaries for the local architecture are also built for several reasons:

  1. some of the programs may only be intended for developers (and will not be packaged with the release)
  2. it makes the programs a little easier to test
  3. some of these compiled programs are actually used by the build process (e.g. the binpatch tools)

In order to build both architectures, the project employs two compilers for C source code:

I would actually have preferred to use GNU C for everything (can you tell I'm a UNIX developer?) but GCC cannot output binaries for the 16-bit DOS architecture which is absolutely necessary for this project. Thus, the project also needs WCC specifically for this purpose. Alternatively, I could have ported the project to use OpenWatcom entirely. I may some day attempt to do that to reduce the complexity of the build environment, though I do not know how its make program compares to GNU's.

Cross-Platform Development

Note that this project should be buildable on any platform that supports GNU C, OpenWatcom, and FASM. This includes MS-Windows (both 32 and 64 bit) with Cygwin or MinGW, Linux, BSD, and potentially MacOS X. Feel free to report your success to me.

As a side note, cross-platform development was one of the reasons I chose OpenWatcom over Digital Mars and Borland, which were also considerations. DJGPP was previously used but required a DPMI interface such as DOS4GW because it produced 32-bit DOS executables. DJGPP also cannot run under 64 bit Windows.

Build Environment Details

The following pages describe Exodus Project build environment in more detail.

Updated