13ff48bf5SDavid du Colombier<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 27dd7cddfSDavid du Colombier<html> 37dd7cddfSDavid du Colombier<head> 47dd7cddfSDavid du Colombier<title>Guide to Ghostscript source code</title> 5*593dc095SDavid du Colombier<!-- $Id: Source.htm,v 1.39 2005/10/20 19:46:23 ray Exp $ --> 67dd7cddfSDavid du Colombier<!-- Originally: source.txt --> 73ff48bf5SDavid du Colombier<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style"> 87dd7cddfSDavid du Colombier</head> 97dd7cddfSDavid du Colombier 107dd7cddfSDavid du Colombier<body> 117dd7cddfSDavid du Colombier<!-- [1.0 begin visible header] ============================================ --> 127dd7cddfSDavid du Colombier 137dd7cddfSDavid du Colombier<!-- [1.1 begin headline] ================================================== --> 147dd7cddfSDavid du Colombier 153ff48bf5SDavid du Colombier<h1>Guide to Ghostscript source code</h1> 167dd7cddfSDavid du Colombier 177dd7cddfSDavid du Colombier<!-- [1.1 end headline] ==================================================== --> 187dd7cddfSDavid du Colombier 197dd7cddfSDavid du Colombier<!-- [1.2 begin table of contents] ========================================= --> 207dd7cddfSDavid du Colombier 217dd7cddfSDavid du Colombier<h2>Table of contents</h2> 227dd7cddfSDavid du Colombier 237dd7cddfSDavid du Colombier<blockquote><ul> 247dd7cddfSDavid du Colombier<li><a href="#Overview">Conceptual overview</a> 257dd7cddfSDavid du Colombier<li><a href="#PostScript_interpreter">PostScript Interpreter</a> 267dd7cddfSDavid du Colombier<li><a href="#PDF_interpreter">PDF interpreter</a> 277dd7cddfSDavid du Colombier<li><a href="#Graphics_library">Graphics library</a> 287dd7cddfSDavid du Colombier<ul> 297dd7cddfSDavid du Colombier<li><a href="#Drivers">Device drivers</a> 307dd7cddfSDavid du Colombier<li><a href="#Platform_specific_code">Platform-specific code</a> 317dd7cddfSDavid du Colombier</ul> 327dd7cddfSDavid du Colombier<li><a href="#Makefiles">Makefiles</a> 337dd7cddfSDavid du Colombier</ul></blockquote> 347dd7cddfSDavid du Colombier 357dd7cddfSDavid du Colombier<!-- [1.2 end table of contents] =========================================== --> 367dd7cddfSDavid du Colombier 377dd7cddfSDavid du Colombier<!-- [1.3 begin hint] ====================================================== --> 387dd7cddfSDavid du Colombier 397dd7cddfSDavid du Colombier<p>For other information, see the <a href="Readme.htm">Ghostscript 407dd7cddfSDavid du Colombieroverview</a> and the documents on <a href="Make.htm">how to build 413ff48bf5SDavid du ColombierGhostscript</a> from source, <a href="C-style.htm">Ghostscript C coding 427dd7cddfSDavid du Colombierguidelines</a>, <a href="Drivers.htm">drivers</a>, the 437dd7cddfSDavid du Colombier<a href="Lib.htm">Ghostscript library</a> and <a href="Install.htm">how to 447dd7cddfSDavid du Colombierinstall Ghostscript</a>. 457dd7cddfSDavid du Colombier 467dd7cddfSDavid du Colombier<!-- [1.3 end hint] ======================================================== --> 477dd7cddfSDavid du Colombier 487dd7cddfSDavid du Colombier<hr> 497dd7cddfSDavid du Colombier 507dd7cddfSDavid du Colombier<!-- [1.0 end visible header] ============================================== --> 517dd7cddfSDavid du Colombier 527dd7cddfSDavid du Colombier<!-- [2.0 begin contents] ================================================== --> 537dd7cddfSDavid du Colombier 543ff48bf5SDavid du Colombier<h2><a name="Overview"></a>Conceptual overview</h2> 557dd7cddfSDavid du Colombier 567dd7cddfSDavid du Colombier<p> 577dd7cddfSDavid du ColombierThe Ghostscript source code is divided conceptually as follows: 587dd7cddfSDavid du Colombier 597dd7cddfSDavid du Colombier<blockquote><table cellpadding=0 cellspacing=0> 607dd7cddfSDavid du Colombier<tr valign=top> <th align=left colspan=4><a href="#PostScript_interpreter">PostScript interpreter</a>: 617dd7cddfSDavid du Colombier<tr valign=top> <td> 627dd7cddfSDavid du Colombier <td>PostScript operators 637dd7cddfSDavid du Colombier <td> 647dd7cddfSDavid du Colombier <td><b><tt>z</tt></b>*<b><tt>.h</tt></b> and <b><tt>z</tt></b>*<b><tt>.c</tt></b> 657dd7cddfSDavid du Colombier<tr valign=top> <td> 667dd7cddfSDavid du Colombier <td>Other interpreter code 677dd7cddfSDavid du Colombier <td> 687dd7cddfSDavid du Colombier <td><b><tt>i</tt></b>*<b><tt>.h</tt></b> and <b><tt>i</tt></b>*<b><tt>.c</tt></b> 697dd7cddfSDavid du Colombier<tr valign=top> <td> 707dd7cddfSDavid du Colombier <td>PostScript code 717dd7cddfSDavid du Colombier <td> 727dd7cddfSDavid du Colombier <td><b><tt>gs_</tt></b>*<b><tt>.ps</tt></b> 737dd7cddfSDavid du Colombier<tr valign=top> <th align=left colspan=4><a href="#PDF_interpreter">PDF interpreter</a>: 747dd7cddfSDavid du Colombier<tr valign=top> <td> 757dd7cddfSDavid du Colombier <td>PostScript code 767dd7cddfSDavid du Colombier <td> 777dd7cddfSDavid du Colombier <td><b><tt>pdf_</tt></b>*<b><tt>.ps</tt></b> 787dd7cddfSDavid du Colombier<tr valign=top> <th align=left colspan=4><a href="#Graphics_library">Graphics library</a>: 797dd7cddfSDavid du Colombier<tr valign=top> <td> 807dd7cddfSDavid du Colombier <td>Main library code 817dd7cddfSDavid du Colombier <td> 827dd7cddfSDavid du Colombier <td><b><tt>g</tt></b>*<b><tt>.h</tt></b> and <b><tt>g</tt></b>*<b><tt>.c</tt></b> 837dd7cddfSDavid du Colombier<tr valign=top> <td> 847dd7cddfSDavid du Colombier <td>Streams 857dd7cddfSDavid du Colombier <td> 867dd7cddfSDavid du Colombier <td><b><tt>s</tt></b>*<b><tt>.h</tt></b> and <b><tt>s</tt></b>*<b><tt>.c</tt></b> 877dd7cddfSDavid du Colombier<tr valign=top> <td> 887dd7cddfSDavid du Colombier <td><a href="#Drivers">Device drivers</a> 897dd7cddfSDavid du Colombier <td> 907dd7cddfSDavid du Colombier <td><b><tt>gdev</tt></b>*<b><tt>.h</tt></b> and <b><tt>gdev</tt></b>*<b><tt>.c</tt></b> 917dd7cddfSDavid du Colombier<tr valign=top> <td> 927dd7cddfSDavid du Colombier <td><a href="#Platform_specific_code">Platform-specific code</a> 937dd7cddfSDavid du Colombier <td> 947dd7cddfSDavid du Colombier <td><b><tt>gp</tt></b>*<b><tt>.h</tt></b> and <b><tt>gp</tt></b>*<b><tt>.c</tt></b> 957dd7cddfSDavid du Colombier</table></blockquote> 967dd7cddfSDavid du Colombier 977dd7cddfSDavid du Colombier<hr> 987dd7cddfSDavid du Colombier 993ff48bf5SDavid du Colombier<h2><a name="PostScript_interpreter"></a>PostScript Interpreter</h2> 1007dd7cddfSDavid du Colombier 1017dd7cddfSDavid du Colombier<p> 1027dd7cddfSDavid du Colombier<b><tt>gs.c</tt></b> is the main program for the interactive language 1037dd7cddfSDavid du Colombierinterpreter; <b><tt>gserver.c</tt></b> is an alternative main program that 1047dd7cddfSDavid du Colombieris a rudimentary server. If you configure Ghostscript as a server rather 1057dd7cddfSDavid du Colombierthan an interactive program, you will use <b><tt>gserver.c</tt></b> instead 1067dd7cddfSDavid du Colombierof <b><tt>gs.c</tt></b>. 1077dd7cddfSDavid du Colombier 1087dd7cddfSDavid du Colombier<p> 1097dd7cddfSDavid du ColombierFiles named <b><tt>z</tt></b>*<b><tt>.c</tt></b> are Ghostscript operator 1107dd7cddfSDavid du Colombierfiles. The names of the files generally follow the section headings of the 1117dd7cddfSDavid du Colombieroperator summary in section 6.2 (Second Edition) or 8.2 (Third Edition) of 1127dd7cddfSDavid du Colombierthe PostScript Language Reference Manual. Each operator XXX is implemented 1137dd7cddfSDavid du Colombierby a procedure named <b><tt>z</tt></b>XXX, for example, 1147dd7cddfSDavid du Colombier<b><tt>zfill</tt></b> and <b><tt>zarray</tt></b>. 1157dd7cddfSDavid du Colombier 1167dd7cddfSDavid du Colombier<p> 1177dd7cddfSDavid du ColombierFiles named <b><tt>i</tt></b>*<b><tt>.c</tt></b>, and *<b><tt>.h</tt></b> 1187dd7cddfSDavid du Colombierother than <b><tt>g</tt></b>*<b><tt>.h</tt></b>, are the rest of the 1197dd7cddfSDavid du Colombierinterpreter. See the makefile for a little more information on how the 1207dd7cddfSDavid du Colombierfiles are divided functionally. 1217dd7cddfSDavid du Colombier 1227dd7cddfSDavid du Colombier<p> 1237dd7cddfSDavid du ColombierThe main loop of the PostScript interpreter is the <b><tt>interp</tt></b> 1247dd7cddfSDavid du Colombierprocedure in <b><tt>interp.c</tt></b>. When the interpreter is reading 1257dd7cddfSDavid du Colombierfrom an input file, it calls the token scanner in 1267dd7cddfSDavid du Colombier<b><tt>iscan</tt></b>*<b><tt>.c</tt></b>. 1277dd7cddfSDavid du Colombier 1287dd7cddfSDavid du Colombier<p> 1297dd7cddfSDavid du Colombier<b><tt>idebug.c</tt></b> contains a lot of debugger-callable routines 1307dd7cddfSDavid du Colombieruseful for printing PostScript objects when debugging. 1317dd7cddfSDavid du Colombier 1327dd7cddfSDavid du Colombier<hr> 1337dd7cddfSDavid du Colombier 1343ff48bf5SDavid du Colombier<h2><a name="PDF_interpreter"></a>PDF interpreter</h2> 1357dd7cddfSDavid du Colombier 1367dd7cddfSDavid du Colombier<p> 1377dd7cddfSDavid du ColombierThe PDF interpreter is written entirely in PostScript. Its main loop is 1387dd7cddfSDavid du Colombierthe <b><tt>.pdfrun</tt></b> procedure in <b><tt>pdf_base.ps</tt></b>. When 1397dd7cddfSDavid du Colombierthe PDF interpreter is configured into the build, it redefines the 1407dd7cddfSDavid du Colombier"<b><tt>run</tt></b>" operator to test whether the file is a PDF file. 1417dd7cddfSDavid du ColombierThis redefinition is near the beginning of <b><tt>pdf_main.ps</tt></b>. 1427dd7cddfSDavid du Colombier 1437dd7cddfSDavid du Colombier<hr> 1447dd7cddfSDavid du Colombier 1453ff48bf5SDavid du Colombier<h2><a name="Graphics_library"></a>Graphics library</h2> 1467dd7cddfSDavid du Colombier 1477dd7cddfSDavid du Colombier<p> 1487dd7cddfSDavid du ColombierFiles beginning with <b><tt>gs</tt></b>, <b><tt>gx</tt></b>, or 1497dd7cddfSDavid du Colombier<b><tt>gz</tt></b> (both <b><tt>.c</tt></b> and <b><tt>.h</tt></b>), other 1507dd7cddfSDavid du Colombierthan <b><tt>gs.c</tt></b> and <b><tt>gserver.c</tt></b>, are the 1517dd7cddfSDavid du ColombierGhostscript library. Files beginning with <b><tt>gdev</tt></b> are device 1527dd7cddfSDavid du Colombierdrivers or related code, also part of the library. Other files beginning 1537dd7cddfSDavid du Colombierwith <b><tt>g</tt></b> are library files that don't fall neatly into either 1547dd7cddfSDavid du Colombierthe kernel or the driver category. 1557dd7cddfSDavid du Colombier 1567dd7cddfSDavid du Colombier<p> 1577dd7cddfSDavid du ColombierFiles named <b><tt>s</tt></b>*<b><tt>.c</tt></b> and 1587dd7cddfSDavid du Colombier<b><tt>s</tt></b>*<b><tt>.h</tt></b> are a flexible stream package, 1597dd7cddfSDavid du Colombierincluding the Level 2 PostScript "filters" supported by Ghostscript. See 1607dd7cddfSDavid du Colombier<b><tt>stream.h</tt></b>, <b><tt>scommon.h</tt></b>, and 1617dd7cddfSDavid du Colombier<b><tt>strimpl.h</tt></b> for all the details. 1627dd7cddfSDavid du Colombier 1633ff48bf5SDavid du Colombier<h3><a name="Drivers"></a>Device drivers</h3> 1647dd7cddfSDavid du Colombier 1657dd7cddfSDavid du Colombier<p> 1667dd7cddfSDavid du ColombierThe interface between the graphics library and device drivers is the only 1677dd7cddfSDavid du Colombierreally well documented one in all of Ghostscript: see the 1687dd7cddfSDavid du Colombier<a href="Drivers.htm">documentation on drivers</a>. 1697dd7cddfSDavid du Colombier 1707dd7cddfSDavid du Colombier<p> 1717dd7cddfSDavid du ColombierIn addition to many real device and file format drivers listed in 1727dd7cddfSDavid du Colombier<b><tt>devs.mak</tt></b> and <b><tt>contrib.mak</tt></b>, a number of 1737dd7cddfSDavid du Colombierdrivers are used for internal purposes. You can search 1747dd7cddfSDavid du Colombier<b><tt>lib.mak</tt></b> for files named 1757dd7cddfSDavid du Colombier<b><tt>gdev</tt></b>*<b><tt>.c</tt></b> to find almost all of them. 1767dd7cddfSDavid du Colombier 1777dd7cddfSDavid du Colombier<p> 1787dd7cddfSDavid du ColombierDrivers are divided into "printer" drivers, which support banding, and 1797dd7cddfSDavid du Colombiernon-printer drivers, which don't. The decision whether banding is 1807dd7cddfSDavid du Colombierrequired is made (by default on the basis of how much memory is available) 1817dd7cddfSDavid du Colombierin the procedure <b><tt>gdev_prn_alloc</tt></b> in 1827dd7cddfSDavid du Colombier<b><tt>gdevprn.c</tt></b>: it implements this decision by filling the 1837dd7cddfSDavid du Colombiervirtual procedure table for the printer device in one of two different 1847dd7cddfSDavid du Colombierways. 1857dd7cddfSDavid du Colombier 1867dd7cddfSDavid du Colombier<p> 1877dd7cddfSDavid du ColombierA good simple "printer" (bandable) driver to read is 1887dd7cddfSDavid du Colombier<b><tt>gdevmiff.c</tt></b>: it's less than 100 lines, of which much is 1897dd7cddfSDavid du Colombierboilerplate. There are no simple non-printer drivers that actually drive 1907dd7cddfSDavid du Colombierdevices: probably the simplest non-printer driver for reading is 1917dd7cddfSDavid du Colombier<b><tt>gdevm8.c</tt></b>, which implements 8-bit-deep devices that only 1927dd7cddfSDavid du Colombierstore the bits in memory. 1937dd7cddfSDavid du Colombier 1943ff48bf5SDavid du Colombier<h3><a name="Platform_specific_code"></a>Platform-specific code</h3> 1957dd7cddfSDavid du Colombier 1967dd7cddfSDavid du Colombier<p> 1977dd7cddfSDavid du ColombierThere are very few platform dependencies in Ghostscript. Ghostscript deals 1987dd7cddfSDavid du Colombierwith them in three ways: 1997dd7cddfSDavid du Colombier 2007dd7cddfSDavid du Colombier<ul> 2017dd7cddfSDavid du Colombier<li>Files named *<b><tt>_.h</tt></b> substitute for the corresponding 2027dd7cddfSDavid du Colombier<b><tt><</tt></b>*<b><tt>.h></tt></b> file by adding conditionals 2037dd7cddfSDavid du Colombierthat provide a uniform set of system interfaces on all platforms. 2047dd7cddfSDavid du Colombier 2057dd7cddfSDavid du Colombier<li>The file <b><tt>arch.h</tt></b> contains a set of 2067dd7cddfSDavid du Colombiermechanically-discovered platform properties like byte order, size of 2077dd7cddfSDavid du Colombier<b><tt>int</tt></b>, etc. These properties, <b>not</b> the names of 2087dd7cddfSDavid du Colombierspecific platforms, are used to select between different algorithms or 2097dd7cddfSDavid du Colombierparameters at compile time. 2107dd7cddfSDavid du Colombier 2117dd7cddfSDavid du Colombier<li>Files named <b><tt>gp</tt></b>*<b><tt>.h</tt></b> define interfaces 2127dd7cddfSDavid du Colombierthat are intended to be implemented differently on each platform, but whose 2137dd7cddfSDavid du Colombierspecification is common to all platforms. 2147dd7cddfSDavid du Colombier</ul> 2157dd7cddfSDavid du Colombier 2167dd7cddfSDavid du Colombier<p> 2177dd7cddfSDavid du ColombierThe platform-specific implementations of the 2187dd7cddfSDavid du Colombier<b><tt>gp</tt></b>*<b><tt>.h</tt></b> interfaces have names of the form 2197dd7cddfSDavid du Colombier"<b><tt>gp_</tt></b><em>{platform}</em><b><tt>.c</tt></b>, specifically 2207dd7cddfSDavid du Colombier(this list may be out of date): 2217dd7cddfSDavid du Colombier 2227dd7cddfSDavid du Colombier<blockquote><table cellpadding=0 cellspacing=0> 2237dd7cddfSDavid du Colombier<tr><th colspan=3 bgcolor="#CCCC00"><hr><font size="+1">Platform-specific interfaces</font><hr> 2247dd7cddfSDavid du Colombier<tr valign=bottom> 2257dd7cddfSDavid du Colombier <th align=left>Routine 2267dd7cddfSDavid du Colombier <td> 2277dd7cddfSDavid du Colombier <th align=left>Platform 2287dd7cddfSDavid du Colombier<tr> <td colspan=3><hr> 2297dd7cddfSDavid du Colombier<tr valign=top> <td><b><tt>gp_dosfb.c</tt></b> 2307dd7cddfSDavid du Colombier <td> 2317dd7cddfSDavid du Colombier <td>DOS 2327dd7cddfSDavid du Colombier<tr valign=top> <td><b><tt>gp_dosfs.c</tt></b> 2337dd7cddfSDavid du Colombier <td> 2347dd7cddfSDavid du Colombier <td>DOS and MS Windows 2357dd7cddfSDavid du Colombier<tr valign=top> <td><b><tt>gp_itbc.c</tt></b> 2367dd7cddfSDavid du Colombier <td> 2377dd7cddfSDavid du Colombier <td>DOS, Borland compilers 2387dd7cddfSDavid du Colombier<tr valign=top> <td><b><tt>gp_iwatc.c</tt></b> 2397dd7cddfSDavid du Colombier <td> 2407dd7cddfSDavid du Colombier <td>DOS, Watcom or Microsoft compiler 2417dd7cddfSDavid du Colombier<tr valign=top> <td><b><tt>gp_msdos.c</tt></b> 2427dd7cddfSDavid du Colombier <td> 2437dd7cddfSDavid du Colombier <td>DOS and MS Windows 2447dd7cddfSDavid du Colombier<tr valign=top> <td><b><tt>gp_ntfs.c</tt></b> 2457dd7cddfSDavid du Colombier <td> 2467dd7cddfSDavid du Colombier <td>MS-Windows Win32s and Windows NT 2477dd7cddfSDavid du Colombier<tr valign=top> <td><b><tt>gp_os2.c</tt></b> 2487dd7cddfSDavid du Colombier <td> 2497dd7cddfSDavid du Colombier <td>OS/2 2507dd7cddfSDavid du Colombier<tr valign=top> <td><b><tt>gp_os9.c</tt></b> 2517dd7cddfSDavid du Colombier <td> 2527dd7cddfSDavid du Colombier <td>OS-9 2537dd7cddfSDavid du Colombier<tr valign=top> <td><b><tt>gp_unifs.c</tt></b> 2547dd7cddfSDavid du Colombier <td> 2557dd7cddfSDavid du Colombier <td>Unix, OS-9, and QNX 2567dd7cddfSDavid du Colombier<tr valign=top> <td><b><tt>gp_unix.c</tt></b> 2577dd7cddfSDavid du Colombier <td> 2587dd7cddfSDavid du Colombier <td>Unix and QNX 2597dd7cddfSDavid du Colombier<tr valign=top> <td><b><tt>gp_sysv.c</tt></b> 2607dd7cddfSDavid du Colombier <td> 2617dd7cddfSDavid du Colombier <td>System V Unix 2627dd7cddfSDavid du Colombier<tr valign=top> <td><b><tt>gp_vms.c</tt></b> 2637dd7cddfSDavid du Colombier <td> 2647dd7cddfSDavid du Colombier <td>VMS 2657dd7cddfSDavid du Colombier<tr valign=top> <td><b><tt>gp_win32.c</tt></b> 2667dd7cddfSDavid du Colombier <td> 2677dd7cddfSDavid du Colombier <td>MS-Windows Win32s and Windows NT 2687dd7cddfSDavid du Colombier</table></blockquote> 2697dd7cddfSDavid du Colombier 2707dd7cddfSDavid du Colombier<p> 2717dd7cddfSDavid du ColombierIf you are going to extend Ghostscript to new machines or operating 2727dd7cddfSDavid du Colombiersystems, check the *<b><tt>_.h</tt></b> files for <b><tt>ifdef</tt></b> on 2737dd7cddfSDavid du Colombierthings other than <b><tt>DEBUG</tt></b>. You should probably plan to make 2747dd7cddfSDavid du Colombiera new makefile and a new <b><tt>gp_</tt></b>XXX<b><tt>.c</tt></b> file. 2757dd7cddfSDavid du Colombier 2767dd7cddfSDavid du Colombier<hr> 2777dd7cddfSDavid du Colombier 2783ff48bf5SDavid du Colombier<h2><a name="Makefiles"></a>Makefiles</h2> 2797dd7cddfSDavid du Colombier 2807dd7cddfSDavid du Colombier<p> 2817dd7cddfSDavid du ColombierThis section is only for advanced developers who need to integrate 2827dd7cddfSDavid du ColombierGhostscript into a larger program at build time. 2837dd7cddfSDavid du Colombier 2847dd7cddfSDavid du Colombier<p> 2857dd7cddfSDavid du ColombierNOTE: THIS SECTION IS INCOMPLETE. IT WILL BE IMPROVED IN A LATER REVISION. 2867dd7cddfSDavid du Colombier 2877dd7cddfSDavid du Colombier<p> 2887dd7cddfSDavid du ColombierThe Ghostscript makefiles are meant to be organized according to the 2897dd7cddfSDavid du Colombierfollowing two principles: 2907dd7cddfSDavid du Colombier 2917dd7cddfSDavid du Colombier<ul> 2927dd7cddfSDavid du Colombier 2937dd7cddfSDavid du Colombier<li>All the parameters that vary from platform to platform appear in the 2947dd7cddfSDavid du Colombiertop-level makefile for a given platform. ("Platform" = OS + compiler + 2957dd7cddfSDavid du Colombierchoice of interpreter vs. library) 2967dd7cddfSDavid du Colombier 2977dd7cddfSDavid du Colombier<li>All the rules and definitions that can meaningfully be shared among more 2987dd7cddfSDavid du Colombierthan 1 platform appear in a makefile that is "included" by a makefile 2997dd7cddfSDavid du Colombier(normally the top-level makefile) for those platforms. 3007dd7cddfSDavid du Colombier</ul> 3017dd7cddfSDavid du Colombier 3027dd7cddfSDavid du Colombier<p> 3037dd7cddfSDavid du ColombierThus, for example: 3047dd7cddfSDavid du Colombier 3057dd7cddfSDavid du Colombier<ul> 3067dd7cddfSDavid du Colombier 3077dd7cddfSDavid du Colombier<li>Rules and definitions shared by all builds are in 3087dd7cddfSDavid du Colombier<b><tt>gs.mak</tt></b>. 3097dd7cddfSDavid du Colombier 3107dd7cddfSDavid du Colombier<li>Rules and definitions specific to the library (on all platforms) are in 3117dd7cddfSDavid du Colombier<b><tt>lib.mak</tt></b>. In principle this could be merged with 3127dd7cddfSDavid du Colombier<b><tt>gs.mak</tt></b>, but we wanted to leave open the possibility that 3137dd7cddfSDavid du Colombier<b><tt>gs.mak</tt></b> might be useful with hypothetical interpreter-only 3147dd7cddfSDavid du Colombierproducts. 3157dd7cddfSDavid du Colombier 3167dd7cddfSDavid du Colombier<li>Stuff specific to interpreters (on all platforms) is in 3177dd7cddfSDavid du Colombier<b><tt>int.mak</tt></b>. 3187dd7cddfSDavid du Colombier 3197dd7cddfSDavid du Colombier<li>Stuff specific to all Unix platforms should be in a single 3207dd7cddfSDavid du Colombier<b><tt>unix.mak</tt></b> file, but because <b><tt>make</tt></b> sometimes 3217dd7cddfSDavid du Colombiercares about the order of definitions, and because some of it is shared with 3227dd7cddfSDavid du ColombierDV/X, it got split between <b><tt>unix-aux.mak</tt></b>, 3237dd7cddfSDavid du Colombier<b><tt>unix-end.mak</tt></b>, <b><tt>unixhead.mak</tt></b>, 3247dd7cddfSDavid du Colombier<b><tt>unixinst.mak</tt></b>, and <b><tt>unixlink.mak</tt></b>. 3257dd7cddfSDavid du Colombier 3267dd7cddfSDavid du Colombier</ul> 3277dd7cddfSDavid du Colombier 3287dd7cddfSDavid du Colombier<p> 3297dd7cddfSDavid du ColombierFor MS-DOS and MS Windows builds, there should be: 3307dd7cddfSDavid du Colombier 3317dd7cddfSDavid du Colombier<ul> 3327dd7cddfSDavid du Colombier 3337dd7cddfSDavid du Colombier<li>A makefile for all MS OS (DOS or Windows) builds, for all 3347dd7cddfSDavid du Colombier compilers and products. 3357dd7cddfSDavid du Colombier 3367dd7cddfSDavid du Colombier<li>Perhaps a makefile for all MS-DOS builds, for all compilers and 3377dd7cddfSDavid du Colombierproducts, although since Watcom is the only such compiler we're likely to 3387dd7cddfSDavid du Colombiersupport this may be overkill. 3397dd7cddfSDavid du Colombier 3407dd7cddfSDavid du Colombier<li>A makefile for all MS Windows builds, for all compilers and products. 3417dd7cddfSDavid du Colombier 3427dd7cddfSDavid du Colombier<li>A makefile for all Watcom builds (DOS or Windows), for all products. 3437dd7cddfSDavid du Colombier 3447dd7cddfSDavid du Colombier<li>A top-level makefile for the Watcom DOS interpreter product. 3457dd7cddfSDavid du Colombier 3467dd7cddfSDavid du Colombier<li>A top-level makefile for the Watcom Windows interpreter product. 3477dd7cddfSDavid du Colombier 3487dd7cddfSDavid du Colombier<li>A top-level makefile for the Watcom DOS library "product". 3497dd7cddfSDavid du Colombier 3507dd7cddfSDavid du Colombier<li>A top-level makefile for the Watcom Windows library "product". 3517dd7cddfSDavid du Colombier 3527dd7cddfSDavid du Colombier<li>A makefile for all Borland builds (DOS or Windows), for all 3537dd7cddfSDavid du Colombier products. 3547dd7cddfSDavid du Colombier 3557dd7cddfSDavid du Colombier</ul> 3567dd7cddfSDavid du Colombier 3577dd7cddfSDavid du Colombier<p> 3587dd7cddfSDavid du Colombierand so on. 3597dd7cddfSDavid du Colombier 3607dd7cddfSDavid du Colombier<!-- [2.0 end contents] ==================================================== --> 3617dd7cddfSDavid du Colombier 3627dd7cddfSDavid du Colombier<!-- [3.0 begin visible trailer] =========================================== --> 3637dd7cddfSDavid du Colombier<hr> 3647dd7cddfSDavid du Colombier 3653ff48bf5SDavid du Colombier<p> 3663ff48bf5SDavid du Colombier<small>Copyright © 1996, 1997, 1998 Aladdin Enterprises. All 3673ff48bf5SDavid du Colombierrights reserved.</small> 3687dd7cddfSDavid du Colombier 3697dd7cddfSDavid du Colombier<p> 370*593dc095SDavid du ColombierThis software is provided AS-IS with no warranty, either express or 371*593dc095SDavid du Colombierimplied. 372*593dc095SDavid du Colombier 373*593dc095SDavid du ColombierThis software is distributed under license and may not be copied, 374*593dc095SDavid du Colombiermodified or distributed except as expressly authorized under the terms 375*593dc095SDavid du Colombierof the license contained in the file LICENSE in this distribution. 376*593dc095SDavid du Colombier 377*593dc095SDavid du ColombierFor more information about licensing, please refer to 378*593dc095SDavid du Colombierhttp://www.ghostscript.com/licensing/. For information on 379*593dc095SDavid du Colombiercommercial licensing, go to http://www.artifex.com/licensing/ or 380*593dc095SDavid du Colombiercontact Artifex Software, Inc., 101 Lucas Valley Road #110, 381*593dc095SDavid du ColombierSan Rafael, CA 94903, U.S.A., +1(415)492-9861. 3827dd7cddfSDavid du Colombier 3833ff48bf5SDavid du Colombier<p> 384*593dc095SDavid du Colombier<small>Ghostscript version 8.53, 20 October 2005 3857dd7cddfSDavid du Colombier 3867dd7cddfSDavid du Colombier<!-- [3.0 end visible trailer] ============================================= --> 3877dd7cddfSDavid du Colombier 3887dd7cddfSDavid du Colombier</body> 3897dd7cddfSDavid du Colombier</html> 390