Skip to content

aranym_configure_1

Thorsten Otto edited this page Feb 7, 2018 · 2 revisions

ARAnyM configuration (1)

This article is very different from previous articles. It describes all important options of ARAnyM configure script. Thanks the script we can build many different ARAnyM binaries on many different platforms with many and many different features.

ARAnyM configure script is developed with help of GNU Autoconf stuff. The script helps mainly with portability, it is the reason why we have it.Today, ARAnyM can run on so different platforms like x86/GNU Linux, Sparc/Solaris, x86/MS Windows and PPC/MacOS X. Yes, it's truth that all these platforms are something near to Unix systems (one of them is certified Unix system - Solaris - and one is used in Unix system emulation mode - MS Windows/Cygwin) but it shouldn't be forgotten the differences are very significant for applications like ARAnyM between these platforms.

But the script helps also with the second important thing. ARAnyM is very variable in its features. We can build large and complex binary with things important only for ARAnyM developers but also really small binary which can be still included on one DD floppy disk on some platforms. Just now I build ARAnyM binary with size 165527 bytes. OK, not completely true :-) The binary, built with parameter -Os, has the size 850455 bytes, strip decreases it to 733968 bytes and then WWW UPX creates the rest. It means that you can create the first aid floppy disk with ARAnyM yourself.

Yes, it's possible to build nearly all of the features in one binary and configure them in run time (who cares about free space today...) but some of these features have important impact on speed of the emulation and also complexity of the config code is lower thanks the script. For the script you need only some Bourne shell and C/C++ compiler. It should be running inside src/Unix directory and one can get the list of all actual options with --help option. After the successful end of the script you can build your new binary with GNU compatible make.

And now we can look closer at the main configurable features. The first important options are debugger's options. There are two different kinds of ARAnyM debuggers, internal and external (or, better, native).

  • --enable-nat-debug
  • --enable-full-debug enable full debug outputs (default=no)
  • --enable-debug=which specify which debugger to use (default=ndebug)
  • --enable-fullhistory enable full history for debugger (default=no)
  • --enable-flightrecorder enable CPU flight recorder (default=no)

This list can be obtained with upper mentioned --help option. The first option was created as experimental mainly but could be used by e.g. Linux distributions. It creates the binary without debugging symbols, which are important e.g. GNU debugger. The output size is smaller about 200kB actually. It is enabled in default configuration.

The four other options are important for ARAnyM developers mainly, but some of them could be used also by other Atari developers. The "full-debug" ignores debug settings inside ARAnyM code and enables a maximal possible debug output. The result is bigger, slower and very talkative binary. With the next option you can select which internal m68k debugger you want to use. The possible values are standard "new debugger", old classic "uae debugger" and GNU debugger (not fully supported, only big experimental hack actually). You can also disable using of any internal debugger. I should mention also another possible debugger, borrowed from BasiliskII, the monitor, which can be enabled with option --with-mon (and you must build "mon" as external binary also).

The last two options help with debugging of some time dependent and interrupt dependent bugs. The "fullhistory" records all PC (program counter - register with pointer on actual instruction) during executions. The size of history can be modified with MAX_HIST in src/include/debug.h (actual size is 10 000 PCs). The output can be obtained in the "new debugger" and during double bus error crash. It uses internal debugger interrupt and that's why cannot be used in JIT compiler mode. If you need something lower invasive (optically) then you can use the last debug option - "flightrecorder"). It records all PC inside instruction dispatchers and also Ax, Dx, MSP, ISP and SR. In this case the output is written after correct end of ARAnyM to file (the name is taken from M68K_LOG_FILE - parameter of your running space, the default value is log.68k).

It seems that this article is again unexpectedly long... So, it's time to finish it and continue in the second part some day later. In the end of this first part I'll describe some last, not so widely used options.

Probably the most interesting option in this part is --with-fink. It could be interesting for Mac OS X users who have more than one way how to build ARAnyM binary for their platform. With this options they can build experimental version of ARAnyM with WWW Fink package.

The main part of "Optional Packages" options is generated by SDL. It helps to build ARAnyM in the situations when SDL library is installed in some non-standard way. Also Mesa and zlib libraries can be configured here.

And "largefile" option? It is a relict of recent history, when the maximum size of files was 2GB. It could be used on some older platforms in some special occasions. Really, not important.

In the next part of this small series I'll describe all (I hope) remaining options, the options which can enable and disable many different features for ARAnyM.

Clone this wiki locally