These are some basic instructions to compile and install YAP: 1. How to compile Yap: To compile YAP just do: (1) mkdir arch (2) cd arch (3) ../configure ...options... (4) check the Makefile for any extensions or changes you want to make. (5) make (6) If the compilation succeeds, try ./yap (7) Happy? make install If you want corouting or CLP(QR), please do replace step 3 by (3') ../configure --enable-coroutining ...other options... 1.1 Where to install Yap Recent versions of Yap try to follow GNU conventions on where to place software. o The main executable is placed at BINDIR. This executable is actually a script that calls the Prolog engine, stored at LIBDIR. o LIBDIR contains the Prolog engine and a Prolog library. o INCLUDEDIR is used if you want to use Yap as a library. 1.2 Which Yap Compiling Yap with the standard options give you a plain vanilla Prolog. You can tune Yap to include some extra functionality o -DCOROUTINING=1 gives you delaying on goals, eg, freeze. o -DRATIONAL_TREES=1 includes support for rational trees. o -DDEPTH_LIMIT=1 allows depth limited evaluation, say for implementing iterative deepening. o -DYAP_ARRAYS gives you two different styles of arrays. o -DANALYST and -DLOW_LEVEL_TRACER give you low level debugging. ANALYST tells how your program uses the abstract machine instructions. LOW_LEVEL_TRACER dumps the gory details of what your program is doing. The next two options are good fun, but arguably not production quality: o -DTABLING gives tabling in XSB style. o -DYAPOR gives or-parallelism in Muse style. If you add -DSBA to it you will have the Sparse Binding Array instead of copying. If you add -DACOW instead you will have the \alphaCOW model, that is, forking instead of copying. 1.3 Porting Yap The system has been mainly tested with GCC, but we have been able to compile versions of Yap under lcc in Linux, Sun's cc compiler, IBM's xlc, SGI's cc, Microsoft's Visual C++ 6.0 and HP's cc. 1.3.1 Yap and GCC Yap has been developed to take advantage of GCC (but not to depend on it). The major advantage of GCC is threaded code and register reservation. YAP is set by default to compile with the best compilation flags we know. Even so, a few specific options can be used depending on the architecture: 1.3.1.1 x86 The flag: YAP_EXTRAS= ... -DBP_FREE=1 tells us to use the %bp register (frame-pointer) as the emulator's program counter. This seems to be stable and should become default real soon now. 1.3.1.2 Sparc/Solaris2 Use: YAP_EXTRAS= ... -mno-app-regs -DOPTIMISE_ALL_REGS_FOR_SPARC=1 and YAP will get two extra registers! This trick does not work on SunOS 4 machines. 1.3.1.3 Tuning GCC/Yap for your machine model Versions of GCC can be tweaked for different processors, eg, 486, Pentium, PentiumPro, Ultrasparc, Supersparc. Unfortunately, some of these tweaks do may make Yap run slower or not at all in other machines with the same instruction set, so they cannot be made default. The best options also depends on the version of GCC you are using, and it is a good idea to consult the GCC manual under the menus "Invoking GCC"/"Submodel Options". We next describe a few: (a) GCC up to 2.7.*: o 486: YAP_EXTRAS= ... -m486 -DBP_FREE=1 to take advantage of 486 specific optimisations in GCC 2.7.*. o Pentium: YAP_EXTRAS= ... -m486 -malign-loops=2 -malign-jumps=2 -malign-functions=2 o PentiumPros are known not to require alignment. o Super and UltraSparcs: YAP_EXTRAS= ... -msupersparc (b) GCC 2.8.*, EGCS, GCC 2.95.* o Check -march=XXX for fun.