home *** CD-ROM | disk | FTP | other *** search
- From: glenn@extro.ucc.su.oz.au (Glenn Geers)
- Newsgroups: alt.sources
- Subject: GhostScript driver for SCO Xenix/Unix 386
- Message-ID: <1990Jun27.225635.2697@metro.ucc.su.OZ.AU>
- Date: 27 Jun 90 22:56:35 GMT
-
- Hi,
- This is my first source posting so if I've done anything wrong
- would someone be kind enough to tell me.
-
- The enclosed shar file contains various files needed to port GhostScript
- 1.4beta3 to Xenix/386. I haven't tried gs 1.3 but I think it still all should
- hold together. You also get a cheap BSD gettimeofday() for SYSV. Defining
- SYSV in the gs makefile did not seem to get rid of the calls to gettimeofday
- so I hacked one together. It's reasonable, but I woudln't use the microsecond
- count for anything critical - no it's not set to zero but to get the
- functionality of gettimeofday I've used three system calls -:)
-
- Anyway, you'll find an example of how to direct port i/o by raising the
- i/o privilege of a user task. This is a compile time option.
-
- The recommended compiler is gcc.
-
- As usual it's all covered by the GNU public license. So if your monitor
- melts it ain't my fault -:)
-
- Share and Enjoy,
- Glenn
-
-
- ---- Cut Here and unpack ----
- #!/bin/sh
- # shar: Shell Archiver (v1.22)
- #
- # Run the following text with /bin/sh to create:
- # README.XENIX
- # bsdtime.h
- # gdevxenix.c
- # gdevxenix.h
- # gp_unix.pat
- # gtd.c
- # makefile.cc
- # makefile.gcc
- #
- if test -f README.XENIX; then echo "File README.XENIX exists"; else
- echo "x - extracting README.XENIX (Text)"
- sed 's/^X//' << 'SHAR_EOF' > README.XENIX &&
- XThis is the README file for the netwide release of the Xenix VGA GhostScript
- Xdriver.
- X
- XThe fastest possible interpreter is made using gcc. I am using undocumented
- Xfeatures of Xenix to get high speed. Please read gdevxenix.h and #undef
- XUSEASM if you don't want to make your interpreter setuid 0. You should
- X#undef USEASM in any case if you are not using gcc.
- XPlease note that on SCO UNIX you don't need have gs setuid 0 to use the
- Xassembler code. This is because SCO UNIX uses the TSS bitmaps to check I/O
- Xprivilege. It doesn't just change the 386's status word. This stuff *is*
- Xdocumented in SCO UNIX 3.2.
- XOn Xenix, if you issue ioctl(fd, VGA_IOPRIVL, 1), you can effectively have
- Xyour way with all of the machine hardware which may be dangerous.
- X
- XI have not done all port accesses using assembler - the fill routine is
- Xfairly fast as is. I will implement it in assembler when I get the urge.
- XIf anyone out there does implement it in assembler would you please post
- Xme the result.
- X
- XIn order to get all this stuff to work you need GhostScript 1.4beta3. This is
- Xavailable by anonymous ftp from extro.ucc.su.oz.au (IP: 129.78.64.1). It is
- Xin the directory archive/gnu. I know of no other sites with this version
- Xavailable. I'm hoping that no major device interface changes occur between
- Xwhat I have and the official release.
- X
- XThere are a few things that need to be pointed out before you start compiling
- XGhostScript.
- X
- X0. Apply the patch
- X1. Copy bsdtime.h /usr/include/sys/bsdtime.h if you can. Otherwise edit
- Xgp_unix.c and make the relevant change.
- XType
- X [g]cc -O -c gtd.c
- X
- Xand stick gtd.o into /lib/386/Slibx.a if you can. Otherwise edit the chosen
- Xmakefile to include gtd.o as a required object.
- X
- X2. Use the makefile.[gcc,cc] distributed with these patches - it is broken just
- Xlike the others -:) Copy the relevant one to makefile.
- X3. type:
- X make gdevxenix.o
- X4. Hand compile gsline.c if you are using gcc - the optimiser fails on this.
- X gcc -DSYSV -c gsline.c
- X OR
- X make ansi2knr
- X ansi2knr gsline.c _z.c
- X cc -Ox -CSON -DSYSV -c _z.c (works ok)
- X rm _z.c
- X mv _z.o gsline.o
- X5. type
- X make xenix.dev <- this should happen automatically: the makefile is
- Xbroken.
- X6. (at last) type
- X make
- X
- XTry gs golfer.ps.
- X
- XNote that GNU C is the recommended compiler. I have the 2.2 DS and I can't
- Xget GhostScript to compile using it. Would someone with a later compiler
- Xhave a shot and let me know the result? The problems is in gsmain.c and
- Xhas to do with pointers to functions. I could fix it but I don't really want
- Xto touch GhostScript proper if I can help it.
- X
- X Thanks,
- X Glenn
- X
- Xglenn@extro.ucc.su.oz.au
- SHAR_EOF
- chmod 0644 README.XENIX || echo "restore of README.XENIX fails"
- set `wc -c README.XENIX`;Sum=$1
- if test "$Sum" != "2596"
- then echo original size 2596, current size $Sum;fi
- fi
- if test -f bsdtime.h; then echo "File bsdtime.h exists"; else
- echo "x - extracting bsdtime.h (Text)"
- sed 's/^X//' << 'SHAR_EOF' > bsdtime.h &&
- X/*
- X** Minimal BSD sys/time.h clone
- X*/
- X
- X/*
- X * Structure returned by gettimeofday(2) system call,
- X * and used in other calls.
- X */
- X
- Xstruct timeval {
- X long tv_sec; /* seconds */
- X long tv_usec; /* and microseconds */
- X};
- X
- Xstruct timezone {
- X int tz_minuteswest; /* minutes west of Greenwich */
- X int tz_dsttime; /* type of dst correction */
- X};
- SHAR_EOF
- chmod 0644 bsdtime.h || echo "restore of bsdtime.h fails"
- set `wc -c bsdtime.h`;Sum=$1
- if test "$Sum" != "337"
- then echo original size 337, current size $Sum;fi
- fi
- if test -f gdevxenix.c; then echo "File gdevxenix.c exists"; else
- echo "x - extracting gdevxenix.c (Text)"
- sed 's/^X//' << 'SHAR_EOF' > gdevxenix.c &&
- Xstatic char rcsid[] = "$Header: gdevxenix.c,v 1.4 90/06/24 12:18:17 root Exp $";
- X
- X/* Copyright (C) 1989, 1990 Aladdin Enterprises. All rights reserved.
- X Distributed by Free Software Foundation, Inc.
- X
- XThis file is part of Ghostscript.
- X
- XGhostscript is distributed in the hope that it will be useful, but
- XWITHOUT ANY WARRANTY. No author or distributor accepts responsibility
- Xto anyone for the consequences of using it or for whether it serves any
- Xparticular purpose or works at all, unless he says so in writing. Refer
- Xto the Ghostscript General Public License for full details.
- X
- XEveryone is granted permission to copy, modify and redistribute
- XGhostscript, but only under the conditions described in the Ghostscript
- XGeneral Public License. A copy of this license is supposed to have been
- Xgiven to you along with Ghostscript so you can know your rights and
- Xresponsibilities. It should be in a file named COPYING. Among other
- Xthings, the copyright notice and this notice must be preserved on all
- Xcopies. */
- X
- X/* gdevxenix.c */
- X
- X/* Ghostscript driver for Xenix/386 with VGA or EGA */
- X
- X#include "gdevxenix.h"
- X
- X/* See gxdevice.h for the definitions of the procedures. */
- X
- Xtypedef struct gx_device_s gx_device;
- X
- Xint xenix_open(P1(gx_device *));
- X
- Xint xenix_close(P1(gx_device *));
- X
- Xgx_color_index xenix_map_rgb_color(P4(gx_device *, ushort, ushort, ushort));
- X
- Xint xenix_map_color_rgb(P3(gx_device *, gx_color_index, ushort *));
- X
- Xint xenix_fill_rectangle(P6(gx_device *, int, int, int, int, gx_color_index));
- X
- Xint xenix_tile_rectangle(P8(gx_device *, gx_bitmap *, int, int, int, int, gx_color_index, gx_color_index));
- X
- Xint xenix_copy_mono(P10(gx_device *, unsigned char *, int, int, int, int, int, int, gx_color_index, gx_color_index));
- X
- Xint xenix_copy_color(P8(gx_device *, unsigned char *, int, int, int, int, int, int));
- X
- Xint xenix_draw_line(P6(gx_device *, int, int, int, int, gx_color_index));
- X
- X/* The device descriptor */
- Xprivate gx_device_procs xenix_procs = {
- X xenix_open,
- X gx_default_get_initial_matrix,
- X gx_default_sync_output,
- X gx_default_output_page,
- X xenix_close,
- X xenix_map_rgb_color,
- X xenix_map_color_rgb,
- X xenix_fill_rectangle,
- X xenix_tile_rectangle,
- X xenix_copy_mono,
- X xenix_copy_color,
- X xenix_draw_line,
- X gx_default_fill_trapezoid,
- X gx_default_tile_trapezoid
- X};
- X
- X#if defined(VGADEV)
- X#define aspect_ratio 1.0
- X#else
- X#define aspect_ratio (14.0/11.0)
- X#endif
- X
- Xgx_device gs_xenix_device = {
- X sizeof(gx_device),
- X &xenix_procs,
- X "xenix-vga",
- X NX, NY,
- X (NY*aspect_ratio)/11.0, NY/11.0,
- X 1,
- X 2,
- X 4,
- X 0 /* not open yet */
- X};
- X
- X
- X/* Open the driver for graphics mode */
- Xint
- Xxenix_open(gx_device *dev)
- X{
- X#if defined(VGADEV) || defined(EGASIM)
- X if ((devfd = open("/dev/vga", O_WRONLY)) == -1) {
- X#else
- X if ((devfd = open("/dev/ega", O_WRONLY)) == -1) {
- X#endif
- X fprintf(stderr, "Cannot open device - FATAL\n");
- X exit(1);
- X }
- X
- X#if defined(VGADEV) || defined(EGASIM)
- X ioctl(devfd, SWAPVGA, 0); /* select vga */
- X#else
- X ioctl(devfd, SWAPEGA, 0); /* select ega */
- X#endif
- X
- X#if defined(USEASM)
- X setpriv(RAISEPRIV);
- X#endif
- X
- X#if defined(VGADEV)
- X ioctl(devfd, SW_VGA12, 0); /* Switch to graphics mode */
- X#else
- X ioctl(devfd, SW_ENH_CG640); /* Switch to graphics mode */
- X#endif
- X
- X#if defined(VGADEV) || defined(EGASIM)
- X vidmem = (char *)ioctl(devfd, MAPVGA, 0); /* map in video ram */
- X#else
- X vidmem = (char *)ioctl(devfd, MAPEGA, 0); /* map in video ram */
- X#endif
- X
- X return 0;
- X}
- X
- X
- X/* Close the driver */
- Xint
- Xxenix_close(gx_device *dev)
- X{
- X#if defined(USEASM)
- X setpriv(REDUCPRIV);
- X#endif
- X
- X#if defined(VGADEV) || defined(EGASIM)
- X ioctl(devfd, SW_VGA80x25, 0);
- X#else
- X ioctl(devfd, SW_ENHC80x25, 0);
- X#endif
- X close(devfd);
- X return 0;
- X}
- X
- X/* Map a r-g-b color to the 16 colors available with an EGA/VGA video card. */
- X/* r, g, b are between 0 and 2. */
- Xprivate char rgb_color[3][3][3] =
- X { { { BLACK, BLUE, LIGHTBLUE },
- X { GREEN, CYAN, LIGHTCYAN },
- X { LIGHTGREEN, LIGHTCYAN, LIGHTCYAN } },
- X { { RED, MAGENTA, LIGHTMAGENTA },
- X { BROWN, LIGHTGRAY, LIGHTBLUE },
- X { YELLOW, YELLOW, WHITE } },
- X { { LIGHTRED, LIGHTMAGENTA, LIGHTMAGENTA },
- X { YELLOW, YELLOW, LIGHTMAGENTA },
- X { YELLOW, YELLOW, WHITE } }
- X };
- X
- Xgx_color_index
- Xxenix_map_rgb_color(gx_device *dev, ushort r, ushort g, ushort b)
- X{
- X if ( dev->has_color )
- X { return (gx_color_index)rgb_color[r][g][b];
- X }
- X else
- X { if ( r > 0 || g > 0 || b > 0 )
- X return (gx_color_index)WHITE;
- X else
- X return (gx_color_index)BLACK;
- X }
- X}
- X
- X
- X/* Map a color code to r-g-b. Surprisingly enough, this is algorithmic. */
- Xint
- Xxenix_map_color_rgb(gx_device *dev, gx_color_index color, ushort *prgb)
- X{ int on = (color & 8 ? 2 : 1);
- X prgb[0] = (color & 4 ? on : 0);
- X prgb[1] = (color & 2 ? on : 0);
- X prgb[2] = (color & 1 ? on : 0);
- X return 0;
- X}
- X
- X
- X/* Copy a monochrome bitmap. The colors are given explicitly. */
- X/* Color = gx_no_color_index means transparent (no effect on the image). */
- Xint
- Xxenix_copy_mono(gx_device *dev, byte *base, int sourcex, int raster,
- X int x, int y, int w, int h,
- X gx_color_index zero, gx_color_index one)
- X{ byte *ptr_line = base + (sourcex >> 3);
- X int left_bit = 0x80 >> (sourcex & 7);
- X int dest_y = y, end_x = x + w;
- X int invert = 0;
- X int color;
- X
- X if ( zero == gx_no_color_index )
- X { if ( one == gx_no_color_index ) return 0;
- X color = (int)one;
- X }
- X else
- X { if ( one == gx_no_color_index )
- X { color = (int)zero;
- X invert = -1;
- X }
- X else
- X { /* Pre-clear the rectangle to zero */
- X fillrect(x, y, x + w - 1, y + h - 1,0,0x00);
- X color = (int)one;
- X }
- X }
- X
- X setcolor(color);
- X
- X while ( h-- ) /* for each line */
- X { byte *ptr_source = ptr_line;
- X register int dest_x = x;
- X register int bit = left_bit;
- X while ( dest_x < end_x ) /* for each bit in the line */
- X { if ( (*ptr_source ^ invert) & bit )
- X monopix(dest_x, dest_y);
- X dest_x++;
- X if ( (bit >>= 1) == 0 )
- X bit = 0x80, ptr_source++;
- X }
- X dest_y++;
- X ptr_line += raster;
- X }
- X return 0;
- X}
- X
- X
- X/* Copy a color pixel map. This is just like a bitmap, except that */
- X/* each pixel takes 4 bits instead of 1 when device driver has color. */
- Xint
- Xxenix_copy_color(gx_device *dev, byte *base, int sourcex, int raster,
- X int x, int y, int w, int h)
- X{
- X /* color device, four bits per pixel */
- X byte *line = base + (sourcex >> 1);
- X int dest_y = y, end_x = x + w;
- X
- X if ( w <= 0 ) return 0;
- X while ( h-- ) /* for each line */
- X { byte *source = line;
- X register int dest_x = x;
- X if ( sourcex & 1 ) /* odd nibble first */
- X { int color = *source++ & 0xf;
- X colorpix(dest_x, dest_y, color);
- X dest_x++;
- X }
- X /* Now do full bytes */
- X while ( dest_x < end_x )
- X { int color = *source >> 4;
- X colorpix(dest_x, dest_y, color);
- X dest_x++;
- X if ( dest_x < end_x )
- X { color = *source++ & 0xf;
- X colorpix(dest_x, dest_y, color);
- X dest_x++;
- X }
- X }
- X dest_y++;
- X line += raster;
- X }
- X return 0;
- X}
- X
- X
- X/* Fill a rectangle. */
- Xint
- Xxenix_fill_rectangle(gx_device *dev, int x, int y, int w, int h,
- X gx_color_index color)
- X{
- X fillrect(x, y, x + w - 1, y + h - 1, color, 0xff);
- X return 0;
- X}
- X
- X
- X/* Tile a rectangle. If neither color is transparent, */
- X/* pre-clear the rectangle to color0 and just tile with color1. */
- X/* This is faster because of how xenix_copy_mono is implemented. */
- Xint
- Xxenix_tile_rectangle(gx_device *dev, gx_bitmap *tile,
- X int x, int y, int w, int h, gx_color_index czero, gx_color_index cone)
- X{ if ( czero != gx_no_color_index && cone != gx_no_color_index )
- X { xenix_fill_rectangle(dev, x, y, w, h, czero);
- X czero = gx_no_color_index;
- X }
- X return gx_default_tile_rectangle(dev, tile, x, y, w, h, czero, cone);
- X}
- X
- X
- X/* Draw a line */
- Xint
- Xxenix_draw_line(gx_device *dev, int x0, int y0, int x1, int y1,
- X gx_color_index color)
- X{ setcolor((int)color);
- X line(x0, y0, x1, y1);
- X return 0;
- X}
- SHAR_EOF
- chmod 0644 gdevxenix.c || echo "restore of gdevxenix.c fails"
- set `wc -c gdevxenix.c`;Sum=$1
- if test "$Sum" != "7779"
- then echo original size 7779, current size $Sum;fi
- fi
- if test -f gdevxenix.h; then echo "File gdevxenix.h exists"; else
- echo "x - extracting gdevxenix.h (Text)"
- sed 's/^X//' << 'SHAR_EOF' > gdevxenix.h &&
- X/* $Header: gdevxenix.h,v 1.6 90/06/27 17:40:36 root Exp $ */
- X
- X/* Copyright (C) 1989, 1990 Aladdin Enterprises. All rights reserved.
- X Distributed by Free Software Foundation, Inc.
- X
- XThis file is part of Ghostscript.
- X
- XGhostscript is distributed in the hope that it will be useful, but
- XWITHOUT ANY WARRANTY. No author or distributor accepts responsibility
- Xto anyone for the consequences of using it or for whether it serves any
- Xparticular purpose or works at all, unless he says so in writing. Refer
- Xto the Ghostscript General Public License for full details.
- X
- XEveryone is granted permission to copy, modify and redistribute
- XGhostscript, but only under the conditions described in the Ghostscript
- XGeneral Public License. A copy of this license is supposed to have been
- Xgiven to you along with Ghostscript so you can know your rights and
- Xresponsibilities. It should be in a file named COPYING. Among other
- Xthings, the copyright notice and this notice must be preserved on all
- Xcopies. */
- X
- X/* gdevxenix.h */
- X
- X#include "gx.h"
- X#include "gsmatrix.h" /* for gxdevice.h */
- X#include "gxbitmap.h"
- X#include "gxdevice.h"
- X
- X/* VGA/EGA and Xenix specific */
- X
- X#include <fcntl.h> /* for O_WRONLY */
- X#include <sys/machdep.h> /* adapter specifics */
- X
- X/* Colours */
- X
- X#define BLACK 0
- X#define BLUE 1
- X#define GREEN 2
- X#define CYAN 3
- X#define RED 4
- X#define MAGENTA 5
- X#define BROWN 6
- X#define LIGHTGRAY 7
- X#define DARKGRAY 8
- X#define LIGHTBLUE 9
- X#define LIGHTGREEN 10
- X#define LIGHTCYAN 11
- X#define LIGHTRED 12
- X#define LIGHTMAGENTA 13
- X#define YELLOW 14
- X#define WHITE 15
- X
- X/* Device specifics */
- X
- X#define VGADEV /* udefine this for EGA */
- X#undef EGASIM /* define this to simulate an EGA on a VGA */
- X
- X/*
- X** Define the next macro if you want real speed.
- X** Only do so if you are using GNU C
- X** For the pivelege stuff to work under Xenix you have to invoke
- X** the program as root or make it setuid 0
- X** On SCO UNIX the program does not have to be setuid 0
- X*/
- X
- X#define USEASM
- X
- X#define REDUCPRIV 0
- X#define RAISEPRIV 1
- X
- X#define NX 640
- X#if defined(VGADEV)
- X#define NY 480
- X#else
- X#define NY 350
- X#endif
- X
- X#define GCTL 0x3ce
- X#define SEQCTL 0x3c4
- X
- X#if defined(__GNUC__)
- X#define INLINE inline
- X#else
- X#define INLINE
- X#endif
- X
- X/*
- X* This is only a macro because its easier
- X* to substitute different routines
- X*/
- X#define VGAREGOUT2(a) outp2(a);
- X
- Xprivate char *vidmem; /* Pointer to virtual address of start of video ram */
- Xprivate int devfd; /* fd for /dev/vga */
- Xprivate unsigned char mask;
- X
- Xprivate void INLINE outp2(P1(short));
- Xprivate void INLINE setcolor(P1(unsigned char));
- Xprivate void INLINE vgaout(P3(unsigned short, unsigned char, unsigned char));
- Xprivate int INLINE line(P4(int, int, int, int));
- Xprivate void INLINE monopix(P2(int, int));
- Xprivate void INLINE colorpix(P3(int, int, unsigned char));
- Xprivate void INLINE fillrect(P6(int,int,int,int,unsigned char,unsigned char));
- Xprivate void INLINE setpriv(P1(int));
- X
- Xprivate void INLINE
- Xsetcolor(unsigned char color)
- X{
- X VGAREGOUT2(5);
- X VGAREGOUT2(color<<8);
- X VGAREGOUT2(0x0f01);
- X}
- X
- Xprivate int INLINE
- Xline(int x1,int y1,int x2,int y2)
- X{
- X int width,deltax,deltay;
- X unsigned int xpos,ypos,i;
- X int xinc,yinc,error;
- X
- X xpos = x1;
- X ypos = y1;
- X
- X deltax = x2 - x1;
- X deltay = y2 - y1;
- X
- X if (deltax < 0) {
- X deltax = -deltax;
- X xinc = -1;
- X }
- X else
- X xinc = 1;
- X
- X if (deltay < 0) {
- X deltay = -deltay;
- X yinc = -1;
- X }
- X else
- X yinc = 1;
- X
- X if (deltax == 0) {
- X deltay++;
- X while(deltay>0) {
- X monopix(x1,ypos);
- X ypos += yinc;
- X deltay-- ;
- X }
- X return;
- X }
- X
- X if (deltay == 0) {
- X deltax++;
- X while(deltax>0) {
- X monopix(xpos,y1);
- X xpos += xinc;
- X deltax-- ;
- X }
- X return;
- X }
- X
- X if (deltax > deltay) {
- X deltay <<= 1;
- X error = deltay - deltax;
- X deltax = deltay - (deltax << 1);
- X while (xpos != x2) {
- X monopix(xpos,ypos);
- X xpos += xinc;
- X if (error > 0) {
- X ypos += yinc;
- X error += deltax;
- X }
- X else
- X error += deltay;
- X }
- X monopix(xpos,ypos);
- X return;
- X }
- X
- X deltax <<= 1;
- X error = deltax - deltay;
- X deltay = deltax - ( deltay << 1);
- X while (ypos != y2) {
- X monopix(xpos,ypos);
- X ypos += yinc;
- X if (error > 0) {
- X xpos += xinc;
- X error += deltay;
- X }
- X else
- X error += deltax;
- X }
- X monopix(xpos,ypos);
- X}
- X
- X/* colour each pixel separately */
- Xprivate void INLINE
- Xcolorpix(int column, int row, unsigned char color)
- X{
- X unsigned int byte;
- X
- X mask = 128 >> (column & 7);
- X byte = row << 6;
- X byte += row << 4;
- X byte += column >> 3;
- X
- X VGAREGOUT2(5);
- X VGAREGOUT2(color<<8);
- X VGAREGOUT2(0x0f01);
- X VGAREGOUT2(mask<<8 | 8);
- X
- X vidmem[byte] |= mask;
- X}
- X
- X/* use setcolor to set the pixel color before drawing */
- Xprivate void INLINE
- Xmonopix(int col, int row)
- X{
- X unsigned int byte;
- X
- X mask = 128 >> (col & 7);
- X
- X byte = row << 6;
- X byte += row << 4;
- X byte += col >> 3;
- X
- X VGAREGOUT2(mask<<8 | 8);
- X vidmem[byte] |= mask;
- X}
- X
- Xprivate void INLINE
- Xfillrect(int x,int y,int x1,int y1,unsigned char color,unsigned char pattern)
- X{
- X unsigned int byte;
- X unsigned char bit, bit1;
- X int i, j, k;
- X
- X setcolor(color);
- X
- X bit = 0xff >> (x & 7);
- X x >>= 3;
- X
- X bit1 = 0x7f >> (x1 & 7);
- X bit1 ^= 0xff;
- X x1 >>= 3;
- X
- X vgaout(GCTL,8,0xff);
- X vgaout(SEQCTL,2,0xff);
- X
- X for(j=y; j<y1+1; j++) {
- X for(i=x+1;i<x1;i++) {
- X byte = j << 6;
- X byte += j << 4;
- X byte += i;
- X vidmem[byte] &= 0x00;
- X }
- X }
- X
- X vgaout(GCTL,8,pattern);
- X vgaout(SEQCTL,2,color & 15);
- X
- X for(j=y; j<y1+1; j++) {
- X for(i=x+1; i<x1; i++) {
- X byte = j << 6;
- X byte += j << 4;
- X byte += i;
- X vidmem[byte] |= 0xff;
- X }
- X }
- X
- X vgaout(GCTL,8,bit);
- X vgaout(SEQCTL,2,0xff);
- X
- X for(j=y; j<y1+1; j++) {
- X byte = j << 6;
- X byte += j << 4;
- X byte += x;
- X vidmem[byte] &= (bit^0xff);
- X }
- X
- X bit &=pattern;
- X
- X vgaout(GCTL,8,bit);
- X vgaout(SEQCTL,2,color & 15);
- X
- X for(j=y; j<y1+1; j++) {
- X byte = j << 6;
- X byte += j << 4;
- X byte += x;
- X vidmem[byte] |= 0xff;
- X }
- X
- X vgaout(GCTL,8,bit1);
- X vgaout(SEQCTL,2,0xff);
- X
- X for(j=y;j<y1+1;j++) {
- X byte = j << 6;
- X byte += j << 4;
- X byte += x1;
- X vidmem[byte] &= (bit1^0xff);
- X }
- X
- X bit1 &= pattern;
- X
- X vgaout(GCTL,8,bit1);
- X vgaout(SEQCTL,2,color & 15);
- X
- X for(j=y; j<y1+1; j++) {
- X byte = j << 6;
- X byte += j << 4;
- X byte += x1;
- X vidmem[byte] |= 0xff;
- X }
- X
- X vgaout(SEQCTL,2,0xff);
- X vgaout(GCTL,3,0);
- X vgaout(GCTL,8,0xff);
- X}
- X
- Xprivate void INLINE
- Xvgaout(unsigned short port,unsigned char index,unsigned char data)
- X{
- X struct port_io_arg op;
- X
- X op.args[1].dir = op.args[0].dir = OUT_ON_PORT;
- X op.args[0].port = port;
- X op.args[0].data = index & 0xff;
- X
- X op.args[1].port = port+1;
- X op.args[1].data = data & 0xff;
- X
- X op.args[2].port = op.args[3].port = 0x00;
- X
- X ioctl(devfd, VGAIO, &op);
- X}
- X
- Xvoid INLINE
- Xoutp2(short data)
- X{
- X#if !defined(USEASM)
- X struct port_io_arg op;
- X
- X op.args[1].dir = op.args[0].dir = OUT_ON_PORT;
- X
- X op.args[0].port = GCTL;
- X op.args[0].data = data&0xff;
- X
- X op.args[1].port = GCTL+1;
- X op.args[1].data = (data&0xff00)>>8;
- X
- X op.args[2].port = op.args[3].port = 0x00;
- X
- X ioctl(devfd, VGAIO, &op);
- X#else
- X asm("movw 8(%ebp),%cx");
- X asm("movw %cx,8(%ebp)");
- X asm("movw %cx,%dx");
- X asm("andw $255,%dx");
- X asm("movswl %dx,%eax");
- X
- X asm("movswl 8(%ebp),%ecx");
- X asm("andl $65280,%ecx");
- X asm("sarl $8,%ecx");
- X
- X asm("mov $0x03ce, %dx");
- X asm("out %al, %dx");
- X asm("inc %dx");
- X asm("mov %cl, %al");
- X asm("out %al, %dx");
- X#endif
- X}
- X
- Xvoid INLINE
- Xsetpriv(int priv)
- X{
- X if (ioctl(devfd, VGA_IOPRIVL, priv) == -1) {
- X xenix_close();
- X fprintf(stderr, "Cannot set privelege level\n");
- X exit(1);
- X }
- X}
- SHAR_EOF
- chmod 0644 gdevxenix.h || echo "restore of gdevxenix.h fails"
- set `wc -c gdevxenix.h`;Sum=$1
- if test "$Sum" != "7924"
- then echo original size 7924, current size $Sum;fi
- fi
- if test -f gp_unix.pat; then echo "File gp_unix.pat exists"; else
- echo "x - extracting gp_unix.pat (Text)"
- sed 's/^X//' << 'SHAR_EOF' > gp_unix.pat &&
- X*** ../orig/gp_unix.c Fri Jan 26 05:31:20 1990
- X--- gp_unix.c Sun Jun 17 11:43:15 1990
- X***************
- X*** 20,27 ****
- X /* gp_unix.c */
- X /* Unix-specific routines for Ghostscript */
- X #include "gx.h"
- X! #include <sys/time.h>
- X! #include <sys/resource.h>
- X
- X /* Do platform-dependent initialization */
- X void
- X--- 20,28 ----
- X /* gp_unix.c */
- X /* Unix-specific routines for Ghostscript */
- X #include "gx.h"
- X! #include <sys/bsdtime.h>
- X! /* #include "bsdtime.h" */
- X! #include <time.h>
- X
- X /* Do platform-dependent initialization */
- X void
- SHAR_EOF
- chmod 0644 gp_unix.pat || echo "restore of gp_unix.pat fails"
- set `wc -c gp_unix.pat`;Sum=$1
- if test "$Sum" != "536"
- then echo original size 536, current size $Sum;fi
- fi
- if test -f gtd.c; then echo "File gtd.c exists"; else
- echo "x - extracting gtd.c (Text)"
- sed 's/^X//' << 'SHAR_EOF' > gtd.c &&
- Xstatic char rcsid[] = "$Header: gtd.c,v 1.3 90/04/01 19:56:14 glenn Exp $";
- X
- X/*
- X** Approximation of BSD gettimeofday(2) for Sys V (Xenix at least)
- X** Should work on a 286 - I think I've got all the casts right!
- X** D. Glenn Geers 2/90
- X*/
- X
- X#include <sys/types.h>
- X#include <sys/timeb.h>
- X#include <sys/bsdtime.h>
- X/* #include "bsdtime.h" */
- X#include <time.h>
- X#include <errno.h>
- X
- Xextern int errno;
- X
- Xint
- Xgettimeofday(tp, tzp)
- Xstruct timeval *tp;
- Xstruct timezone *tzp;
- X{
- X long clock;
- X struct timeb *now;
- X struct tm *localnow;
- X
- X now = (struct timeb *)malloc(sizeof(struct timeb));
- X localnow = (struct tm *)malloc(sizeof(struct tm));
- X
- X clock = time(0);
- X localnow = localtime(&clock);
- X
- X ftime(now);
- X
- X/* Shouldn't fail - just for completeness and in case ... */
- X if (errno == EFAULT) {
- X errno = EFAULT; /*must set since EFAULT was set for this call */
- X return(-1);
- X }
- X
- X if (tzp != (struct timezone *)0) {
- X tzp->tz_minuteswest = (int)(localnow->tm_tzadj/60);
- X tzp->tz_dsttime = (int)(localnow->tm_isdst);
- X }
- X
- X tp->tv_sec = (long)(now->time);
- X tp->tv_usec = (long)(1000 * (long)(now->millitm));
- X
- X return(0);
- X}
- SHAR_EOF
- chmod 0644 gtd.c || echo "restore of gtd.c fails"
- set `wc -c gtd.c`;Sum=$1
- if test "$Sum" != "1100"
- then echo original size 1100, current size $Sum;fi
- fi
- if test -f makefile.cc; then echo "File makefile.cc exists"; else
- echo "x - extracting makefile.cc (Text)"
- sed 's/^X//' << 'SHAR_EOF' > makefile.cc &&
- X# Copyright (C) 1989, 1990 Aladdin Enterprises. All rights reserved.
- X# Distributed by Free Software Foundation, Inc.
- X#
- X# This file is part of Ghostscript.
- X#
- X# Ghostscript is distributed in the hope that it will be useful, but
- X# WITHOUT ANY WARRANTY. No author or distributor accepts responsibility
- X# to anyone for the consequences of using it or for whether it serves any
- X# particular purpose or works at all, unless he says so in writing. Refer
- X# to the Ghostscript General Public License for full details.
- X#
- X# Everyone is granted permission to copy, modify and redistribute
- X# Ghostscript, but only under the conditions described in the Ghostscript
- X# General Public License. A copy of this license is supposed to have been
- X# given to you along with Ghostscript so you can know your rights and
- X# responsibilities. It should be in a file named COPYING. Among other
- X# things, the copyright notice and this notice must be preserved on all
- X# copies.
- X
- X# makefile for Ghostscript, Unix/gcc/xenix configuration.
- X
- X# ------------------------------- Options ------------------------------- #
- X
- X####### The following are the only parts of the file you should need to edit.
- X
- X# ------ Generic options ------ #
- X
- X# Choose the device(s) to include. See gdevs.mak for details.
- X
- XDEVICES=xenix
- X
- X# Choose generic configuration options.
- X
- X# -DDEBUG
- X# includes debugging features (-Z switch) in the code.
- X# Code runs substantially slower even if no debugging switches
- X# are set.
- X# -DNOPRIVATE
- X# makes private (static) procedures and variables public,
- X# so they are visible to the debugger and profiler.
- X# No execution time or space penalty.
- X
- XGENOPT= -Ox -CSON
- X
- X# ------ Platform-specific options ------ #
- X
- X# Define the name of the C compiler.
- X
- XCC=gcc
- X
- X# Define the other compilation flags.
- X# Add -DBSD4_2 for 4.2bsd systems.
- X# Add -DSYSV for System V.
- X# We don't include -ansi, because this gets in the way of the platform-
- X# specific stuff that <math.h> typically needs.
- X# If you are running on SunOS 4.0.x, you must add a -D for the machine
- X# type, or /usr/include/sys/ieeefp.h will fail to define
- X# fp_direction_type, and so <math.h> won't pass the compiler, and so
- X# zarith.c and many other files won't compile. The right -D symbol for
- X# the Sun-4 and SparcStation is -Dsparc; for the Sun-3, it is mc68000.
- X
- XCFLAGS= -O -DSYSV -fstrength-reduce -finline-functions
- X
- X# Define platform flags for ld.
- X# Most Unix systems accept -X, but some don't.
- X# Sun OS4.n may need -Bstatic.
- X
- XLDPLAT=
- X
- X# ---------------------------- End of options --------------------------- #
- X
- X# Define the name of the makefile -- used in dependencies.
- X
- XMAKEFILE=unix-gcc.mak
- X
- X# Define the extensions for the object and executable files.
- X
- XOBJ=o
- XXE=
- X
- X# Define the ANSI-to-K&R dependency. (gcc accepts ANSI syntax.)
- X
- XAK= ansi2knr
- X
- X# Define the compilation rules.
- X
- XCCFLAGS=$(GENOPT) $(CFLAGS)
- X
- X.c.o:
- X -ansi2knr $*.c _temp_.c
- X $(CC) $(CCFLAGS) -c _temp_.c
- X mv _temp_.o $*.o
- X
- XCCNA=./ccgs "$(CC) $(CCFLAGS)" _temp_.c
- X
- X# --------------------------- Generic makefile ---------------------------- #
- X
- X# The remainder of the makefile (ghost.mak, gdevs.mak, and unixtail.mak)
- X# is generic. tar_gs concatenates all these together.
- X# Copyright (C) 1989, 1990 Aladdin Enterprises. All rights reserved.
- X# Distributed by Free Software Foundation, Inc.
- X#
- X# This file is part of Ghostscript.
- X#
- X# Ghostscript is distributed in the hope that it will be useful, but
- X# WITHOUT ANY WARRANTY. No author or distributor accepts responsibility
- X# to anyone for the consequences of using it or for whether it serves any
- X# particular purpose or works at all, unless he says so in writing. Refer
- X# to the Ghostscript General Public License for full details.
- X#
- X# Everyone is granted permission to copy, modify and redistribute
- X# Ghostscript, but only under the conditions described in the Ghostscript
- X# General Public License. A copy of this license is supposed to have been
- X# given to you along with Ghostscript so you can know your rights and
- X# responsibilities. It should be in a file named COPYING. Among other
- X# things, the copyright notice and this notice must be preserved on all
- X# copies.
- X
- X# Generic makefile for Ghostscript.
- X# The platform-specific makefiles 'include' this file.
- X# They define the following symbols:
- X# XE - the extension for executable files (e.g., null or .exe).
- X# OBJ - the extension for relocatable object files (e.g., o or obj).
- X# CCNA - the non-ANSI C invocation for files that on some platforms
- X# include in-line assembly code or other non-standard
- X# constructs. Currently this is needed on every file that
- X# includes sstorei.h.
- X# AK - if source files must be converted from ANSI to K&R syntax,
- X# this is ansi2knr$(XE); if not, it is null.
- X
- Xdefault: gs$(XE)
- X
- Xtest: gt$(XE)
- X
- Xclean:
- X rm -f *.$(OBJ) *.a core
- X rm -f _temp_.* *.dev libc*.tl *.map gdevs.h gdevs.tl
- X rm -f ansi2knr$(XE)
- X rm -f gs$(XE) gs.sym
- X
- Xansi2knr$(XE):
- X cc -o ansi2knr$(XE) -O ansi2knr.c
- X
- X# Note: Unix uses malloc.h and memory.h;
- X# Turbo C uses alloc.h, stdlib.h, and mem.h.
- X# 4.2bsd uses strings.h; other systems use string.h.
- X# gcc on VMS doesn't have a math.h.
- X# We handle this by using local include files called
- X# malloc_.h, math_.h, memory_.h, and string_.h
- X# that perform appropriate indirection.
- X
- X# -------------------------------- Library -------------------------------- #
- X
- XGX=$(AK) std.h gx.h
- XGXERR=$(GX) gserrors.h
- X
- X# High-level facilities
- X
- Xgschar.$(OBJ): gschar.c $(GXERR) gxfixed.h gxmatrix.h gzdevice.h gxdevmem.h gxfont.h gxchar.h gzpath.h gzcolor.h gzstate.h
- X
- Xgscolor.$(OBJ): gscolor.c $(GXERR) gxfixed.h gxmatrix.h gxdevice.h gzstate.h gzcolor.h gzhalfto.h
- X
- Xgscoord.$(OBJ): gscoord.c $(GXERR) gxfixed.h gxmatrix.h gzdevice.h gzstate.h gscoord.h
- X
- Xgsdevice.$(OBJ): gsdevice.c $(GXERR) gxfixed.h gxmatrix.h gxbitmap.h gxdevmem.h gzstate.h gzdevice.h
- X
- Xgsfile.$(OBJ): gsfile.c $(GXERR) gsmatrix.h gxdevice.h gxdevmem.h
- X
- Xgsfont.$(OBJ): gsfont.c $(GXERR) gxdevice.h gxfixed.h gxmatrix.h gxfont.h gzstate.h
- X
- Xgsimage.$(OBJ): gsimage.c $(GXERR) gxfixed.h gxmatrix.h gspaint.h gzcolor.h gzdevice.h gzpath.h gzstate.h gximage.h
- X
- Xgsim2out.$(OBJ): gsim2out.c $(GXERR)
- X
- Xgsline.$(OBJ): gsline.c $(GXERR) gxfixed.h gxmatrix.h gzstate.h gzline.h
- X
- Xgsmatrix.$(OBJ): gsmatrix.c $(GXERR) gxfixed.h gxmatrix.h
- X
- Xgsmisc.$(OBJ): gsmisc.c $(GX)
- X
- Xgspaint.$(OBJ): gspaint.c $(GX) gxfixed.h gxmatrix.h gspaint.h gzpath.h gzstate.h gzdevice.h gximage.h
- X
- Xgspath.$(OBJ): gspath.c $(GXERR) gxfixed.h gxmatrix.h gxpath.h gzstate.h
- X
- Xgspath2.$(OBJ): gspath2.c $(GXERR) gspath.h gxfixed.h gxmatrix.h gzstate.h gzpath.h gzdevice.h
- X
- Xgsstate.$(OBJ): gsstate.c $(GXERR) gxfixed.h gxmatrix.h gzstate.h gzcolor.h gzdevice.h gzhalfto.h gzline.h gzpath.h
- X
- X# Low-level facilities
- X
- Xgxcache.$(OBJ): gxcache.c $(GX) gserrors.h gxfixed.h gxmatrix.h gspaint.h gzdevice.h gzcolor.h gxdevmem.h gxfont.h gxchar.h gzstate.h gzpath.h
- X
- Xgxcolor.$(OBJ): gxcolor.c $(GX) gxfixed.h gxmatrix.h gxdevice.h gzcolor.h gzhalfto.h
- X
- Xgxdraw.$(OBJ): gxdraw.c $(GX) gxfixed.h gxmatrix.h gxbitmap.h gzcolor.h gzdevice.h gzstate.h
- X
- Xgxfill.$(OBJ): gxfill.c $(GXERR) gxfixed.h gxmatrix.h gxdevice.h gzcolor.h gzpath.h gzstate.h
- X
- Xgxht.$(OBJ): gxht.c $(GXERR) gxfixed.h gxmatrix.h gxbitmap.h gzstate.h gzcolor.h gzdevice.h gzhalfto.h
- X
- Xgxpath.$(OBJ): gxpath.c $(GXERR) gxfixed.h gzpath.h
- X
- Xgxpath2.$(OBJ): gxpath2.c $(GXERR) gxfixed.h gzpath.h
- X
- Xgxstroke.$(OBJ): gxstroke.c $(GXERR) gxfixed.h gxmatrix.h gzstate.h gzcolor.h gzdevice.h gzline.h gzpath.h
- X
- X# The "memory" device
- X
- Xgdevmem.$(OBJ): gdevmem.c $(AK) gs.h gxbitmap.h gsmatrix.h gxdevice.h gxdevmem.h
- X $(CCNA) gdevmem.c
- X
- X# Files dependent on the set of installed devices.
- X# Generating gdevs.h also generates gdevs.tl.
- X
- Xgdevs.h: gdevs.mak $(MAKEFILE)
- X gsconfig $(DEVICES)
- X
- Xgdevs.$(OBJ): gdevs.c $(AK) gdevs.h
- X
- X# On Unix, we pre-link all of the library except the back end.
- X# On MS-DOS, we have to do the whole thing at once.
- X
- XLIB=gschar.$(OBJ) gscolor.$(OBJ) gscoord.$(OBJ) gsdevice.$(OBJ) \
- X gsfile.$(OBJ) gsfont.$(OBJ) gsimage.$(OBJ) gsim2out.$(OBJ) \
- X gsline.$(OBJ) gsmatrix.$(OBJ) gsmisc.$(OBJ) \
- X gspaint.$(OBJ) gspath.$(OBJ) gspath2.$(OBJ) gsstate.$(OBJ) \
- X gxcache.$(OBJ) gxcolor.$(OBJ) gxdraw.$(OBJ) gxfill.$(OBJ) \
- X gxht.$(OBJ) gxpath.$(OBJ) gxpath2.$(OBJ) gxstroke.$(OBJ) \
- X gdevmem.$(OBJ) gdevs.$(OBJ)
- X
- X# ------------------------------ Interpreter ------------------------------ #
- X
- X# Non-graphics utilities
- X
- XGH=$(AK) ghost.h
- X
- Xialloc.$(OBJ): ialloc.c $(AK) std.h alloc.h
- X
- Xidebug.$(OBJ): idebug.c $(GH) name.h
- X
- Xidict.$(OBJ): idict.c $(GH) alloc.h errors.h name.h store.h dict.h
- X
- Xiinit.$(OBJ): iinit.c $(GH) dict.h oper.h store.h
- X
- Xiname.$(OBJ): iname.c $(GH) alloc.h errors.h name.h store.h
- X
- Xinterp.$(OBJ): interp.c $(GH) errors.h name.h dict.h oper.h store.h sstorei.h stream.h
- X $(CCNA) interp.c
- X
- Xiscan.$(OBJ): iscan.c $(GH) alloc.h dict.h errors.h store.h stream.h
- X
- Xiutil.$(OBJ): iutil.c $(GH) errors.h alloc.h store.h gsmatrix.h gxdevice.h gzcolor.h
- X
- Xstream.$(OBJ): stream.c $(AK) std.h stream.h
- X
- X# Non-graphics operators
- X
- XOP=$(GH) errors.h oper.h
- X
- Xzarith.$(OBJ): zarith.c $(OP) store.h
- X
- Xzarray.$(OBJ): zarray.c $(OP) alloc.h store.h sstorei.h
- X $(CCNA) zarray.c
- X
- Xzcontrol.$(OBJ): zcontrol.c $(OP) estack.h store.h sstorei.h
- X $(CCNA) zcontrol.c
- X
- Xzdict.$(OBJ): zdict.c $(OP) dict.h store.h
- X
- Xzfile.$(OBJ): zfile.c $(OP) alloc.h stream.h store.h gsmatrix.h gxdevice.h gxdevmem.h
- X
- Xzgeneric.$(OBJ): zgeneric.c $(OP) dict.h estack.h store.h
- X
- Xzmath.$(OBJ): zmath.c $(OP) store.h
- X
- Xzmisc.$(OBJ): zmisc.c $(OP) alloc.h dict.h store.h
- X
- Xzrelbit.$(OBJ): zrelbit.c $(OP) store.h sstorei.h
- X $(CCNA) zrelbit.c
- X
- Xzstack.$(OBJ): zstack.c $(OP) store.h sstorei.h
- X $(CCNA) zstack.c
- X
- Xzstring.$(OBJ): zstring.c $(OP) alloc.h store.h stream.h
- X
- Xztype.$(OBJ): ztype.c $(OP) stream.h store.h
- X
- Xzvmem.$(OBJ): zvmem.c $(OP) alloc.h state.h store.h gsmatrix.h gsstate.h
- X
- X# Graphics operators
- X
- Xzchar.$(OBJ): zchar.c $(OP) gsmatrix.h gschar.h gxdevice.h gxfont.h alloc.h font.h estack.h state.h store.h
- X
- Xzcolor.$(OBJ): zcolor.c $(OP) alloc.h gsmatrix.h gsstate.h state.h store.h
- X
- Xzdevice.$(OBJ): zdevice.c $(OP) alloc.h state.h gsmatrix.h gsstate.h gxdevice.h store.h
- X
- Xzfont.$(OBJ): zfont.c $(OP) gsmatrix.h gxdevice.h gxfont.h alloc.h font.h dict.h state.h store.h
- X
- Xzgstate.$(OBJ): zgstate.c $(OP) alloc.h gsmatrix.h gsstate.h state.h store.h
- X
- Xzht.$(OBJ): zht.c $(OP) alloc.h estack.h gsmatrix.h gsstate.h state.h store.h
- X
- Xzmatrix.$(OBJ): zmatrix.c $(OP) gsmatrix.h state.h gscoord.h store.h
- X
- Xzpaint.$(OBJ): zpaint.c $(OP) alloc.h estack.h gsmatrix.h gspaint.h state.h store.h
- X
- Xzpath.$(OBJ): zpath.c $(OP) gsmatrix.h gspath.h state.h store.h
- X
- Xzpath2.$(OBJ): zpath2.c $(OP) alloc.h estack.h gspath.h state.h store.h
- X
- X# Linking
- X
- XINT=ialloc.$(OBJ) idebug.$(OBJ) idict.$(OBJ) iinit.$(OBJ) iname.$(OBJ) \
- X interp.$(OBJ) iscan.$(OBJ) iutil.$(OBJ) stream.$(OBJ) \
- X zarith.$(OBJ) zarray.$(OBJ) zcontrol.$(OBJ) zdict.$(OBJ) zfile.$(OBJ) \
- X zgeneric.$(OBJ) zmath.$(OBJ) zmisc.$(OBJ) zrelbit.$(OBJ) \
- X zstack.$(OBJ) zstring.$(OBJ) ztype.$(OBJ) zvmem.$(OBJ) \
- X zchar.$(OBJ) zcolor.$(OBJ) zfont.$(OBJ) zdevice.$(OBJ) zgstate.$(OBJ) \
- X zht.$(OBJ) zmatrix.$(OBJ) zpaint.$(OBJ) zpath.$(OBJ) zpath2.$(OBJ)
- X
- X# ----------------------------- Main program ------------------------------ #
- X
- X# Utilities shared between platforms
- X
- Xgsmain.$(OBJ): gsmain.c $(GX) gsmatrix.h gxdevice.h
- X
- X# Library test program driver
- X
- Xgt.$(OBJ): gt.c $(GX) gsmatrix.h gsstate.h gscoord.h gspaint.h gspath.h gxdevice.h
- X
- X# Interpreter main program
- X
- Xgs.$(OBJ): gs.c $(GH) alloc.h store.h stream.h
- X# Copyright (C) 1989, 1990 Aladdin Enterprises. All rights reserved.
- X# Distributed by Free Software Foundation, Inc.
- X#
- X# This file is part of Ghostscript.
- X#
- X# Ghostscript is distributed in the hope that it will be useful, but
- X# WITHOUT ANY WARRANTY. No author or distributor accepts responsibility
- X# to anyone for the consequences of using it or for whether it serves any
- X# particular purpose or works at all, unless he says so in writing. Refer
- X# to the Ghostscript General Public License for full details.
- X#
- X# Everyone is granted permission to copy, modify and redistribute
- X# Ghostscript, but only under the conditions described in the Ghostscript
- X# General Public License. A copy of this license is supposed to have been
- X# given to you along with Ghostscript so you can know your rights and
- X# responsibilities. It should be in a file named COPYING. Among other
- X# things, the copyright notice and this notice must be preserved on all
- X# copies.
- X
- X# makefile for Ghostscript device drivers.
- X
- X# -------------------------------- Catalog ------------------------------- #
- X
- X# It is possible to build Ghostscript with an arbitrary collection of
- X# device drivers, although many drivers are supported only on a subset
- X# of the target platforms. The currently available drivers are:
- X
- X# Displays:
- X# bgi Borland Graphics Interface [MS-DOS only]
- X# ega EGA display using direct addressing [MS-DOS only]
- X# ega_bios EGA display using BIOS calls (very slow) [MS-DOS only]
- X# x11 X Windows version 11, release >=3 [Unix only]
- X# Printers:
- X# deskjet H-P DeskJet [MS-DOS only]
- X# epson Epson dot matrix printers [MS-DOS only]
- X
- X# If you add drivers, it would be nice if you kept each list
- X# in alphabetical order.
- X
- X# Each platform-specific makefile should contain a line of the form
- X# DEVICES=<dev1> ... <devn>
- X# where dev1 ... devn are the devices to be included in the build.
- X# dev1 will be used as the default device.
- X# This line should appear before the lines
- X# (!)include gdevs.mak
- X# (!)include ghost.mak
- X# The rule for constructing the final executable should include gdevs.tl
- X# as one of the files on which the executable depends, and the executable
- X# must be linked with all the files named in gdevs.tl.
- X
- X# ---------------------------- End of catalog ---------------------------- #
- X
- X# If you want to add a new device driver, the examples below should be
- X# enough of a guide to the correct form for the makefile rules.
- X
- X# All device drivers depend on the following:
- X
- XGDEV=$(AK) gx.h gsmatrix.h gxbitmap.h gxdevice.h
- X
- X###### ----------------------- The EGA device ----------------------- ######
- X
- Xega_=gdevegad.$(OBJ) gdevegaa.$(OBJ)
- Xega.dev: $(ega_)
- X gssetdev ega.dev $(ega_)
- X
- Xega_bios_=gdevegab.$(OBJ) gdevegaa.$(OBJ)
- Xega_bios.dev: $(ega_bios_)
- X gssetdev ega_bios.dev $(ega_bios_)
- X
- XETEST=ega.$(OBJ) trace.$(OBJ) $(ega_)
- Xega.exe: $(ETEST) libc$(MM).tl
- X tlink /m /l $(LIBDIR)\c0$(MM) @ega.tl @libc$(MM).tl
- X
- Xega.$(OBJ): ega.c $(GDEV)
- X
- X# Note: gdevega.h includes gs.h, gsmatrix.h, gxbitmap.h, and gxdevice.h.
- X# There is no way to express this indirect dependency in the makefile.
- X
- XGDEVEGAH=gs.h gdevega.h $(GDEV)
- X
- Xgdevegaa.$(OBJ): gdevegaa.asm
- X
- Xgdevegab.$(OBJ): gdevegab.c $(GDEVEGAH)
- X $(CCNA) $*
- X
- Xgdevegad.$(OBJ): gdevegad.c $(GDEVEGAH)
- X $(CCNA) $*
- X
- X###### --------- The BGI (Borland Graphics Interface) device -------- ######
- X
- Xbgi_=gdevbgi.$(OBJ)
- Xbgi.dev: $(bgi_)
- X gssetdev bgi.dev $(bgi_)
- X
- Xgdevbgi.$(OBJ): gdevbgi.c $(GDEV)
- X
- X###### --------------- Memory-buffered printer devices --------------- ######
- X
- Xgvirtmem.$(OBJ): gvirtmem.c gvirtmem.h
- X
- X# Virtual memory test program -- requires VMDEBUG
- X
- Xgvm.exe: gvirtmem.$(OBJ) trace.$(OBJ)
- X tlink /m /l $(LIBDIR)\c0$(MM) gvirtmem trace,gvm,gvm,$(LIBDIR)\c$(MM)
- X
- XPDEVH=$(GDEV) gxdevmem.h gdevprn.h
- X
- X### ------------------ The H-P DeskJet printer device ------------------ ###
- X
- Xdeskjet_=gdevdjet.$(OBJ) gvirtmem.$(OBJ)
- Xdeskjet.dev: $(deskjet_)
- X gssetdev deskjet.dev $(deskjet_)
- X
- Xgdevdjet.$(OBJ): gdevdjet.c $(PDEVH)
- X
- X### ----------------- The generic Epson printer device ----------------- ###
- X
- Xepson_=gdevepsn.$(OBJ) gvirtmem.$(OBJ)
- Xepson.dev: $(epson_)
- X gssetdev epson.dev $(epson_)
- X
- Xgdevepsn.$(OBJ): gdevepsn.c $(PDEVH)
- X
- X###### ----------------------- The Xenix device ----------------------- ######
- X
- Xxenix_=gdevxenix.$(OBJ)
- Xxenix.dev: $(xenix_)
- X gssetdev xenix.dev $(xenix_)
- X
- Xgdevxenix.$(OBJ): gdevxenix.c $(GDEV) gdevxenix.h
- X
- X# Copyright (C) 1990 Aladdin Enterprises. All rights reserved.
- X# Distributed by Free Software Foundation, Inc.
- X#
- X# This file is part of Ghostscript.
- X#
- X# Ghostscript is distributed in the hope that it will be useful, but
- X# WITHOUT ANY WARRANTY. No author or distributor accepts responsibility
- X# to anyone for the consequences of using it or for whether it serves any
- X# particular purpose or works at all, unless he says so in writing. Refer
- X# to the Ghostscript General Public License for full details.
- X#
- X# Everyone is granted permission to copy, modify and redistribute
- X# Ghostscript, but only under the conditions described in the Ghostscript
- X# General Public License. A copy of this license is supposed to have been
- X# given to you along with Ghostscript so you can know your rights and
- X# responsibilities. It should be in a file named COPYING. Among other
- X# things, the copyright notice and this notice must be preserved on all
- X# copies.
- X
- X# Partial makefile for Ghostscript, common to all Unix configurations.
- X
- X# This is the last part of the makefile for Unix configurations.
- X# Since Unix make doesn't have an 'include' facility, we concatenate
- X# the various parts of the makefile together by brute force (in tar_gs).
- X
- X# -------------------------------- Library -------------------------------- #
- X
- X## The Unix platform
- X
- XPLATUNIX=gp_unix.$(OBJ)
- X
- Xgp_unix.$(OBJ): gp_unix.c
- X
- X# ----------------------------- Main program ------------------------------ #
- X
- X# (Dummy) tracing package
- X
- Xutrace.$(OBJ): utrace.c
- X
- X# Main program
- X
- XALLUNIX=gsmain.$(OBJ) utrace.$(OBJ) $(LIB) $(PLATUNIX)
- X
- X# Library test programs
- X
- XGTUNIX=gt.$(OBJ) $(ALLUNIX)
- Xgt: $(GTUNIX) gdevs.tl
- X $(CC) $(CFLAGS) $(LDPLAT) -o gt $(GTUNIX) `cat gdevs.tl` -lx -lfpu
- X
- X# Interpreter main program
- X
- XGSUNIX=gs.$(OBJ) $(INT) $(ALLUNIX)
- Xgs: $(GSUNIX) gdevs.tl
- X $(CC) $(CFLAGS) $(LDPLAT) -o gs $(GSUNIX) `cat gdevs.tl` -lx -lm
- SHAR_EOF
- chmod 0644 makefile.cc || echo "restore of makefile.cc fails"
- set `wc -c makefile.cc`;Sum=$1
- if test "$Sum" != "17752"
- then echo original size 17752, current size $Sum;fi
- fi
- if test -f makefile.gcc; then echo "File makefile.gcc exists"; else
- echo "x - extracting makefile.gcc (Text)"
- sed 's/^X//' << 'SHAR_EOF' > makefile.gcc &&
- X# Copyright (C) 1989, 1990 Aladdin Enterprises. All rights reserved.
- X# Distributed by Free Software Foundation, Inc.
- X#
- X# This file is part of Ghostscript.
- X#
- X# Ghostscript is distributed in the hope that it will be useful, but
- X# WITHOUT ANY WARRANTY. No author or distributor accepts responsibility
- X# to anyone for the consequences of using it or for whether it serves any
- X# particular purpose or works at all, unless he says so in writing. Refer
- X# to the Ghostscript General Public License for full details.
- X#
- X# Everyone is granted permission to copy, modify and redistribute
- X# Ghostscript, but only under the conditions described in the Ghostscript
- X# General Public License. A copy of this license is supposed to have been
- X# given to you along with Ghostscript so you can know your rights and
- X# responsibilities. It should be in a file named COPYING. Among other
- X# things, the copyright notice and this notice must be preserved on all
- X# copies.
- X
- X# makefile for Ghostscript, Unix/gcc/xenix configuration.
- X
- X# ------------------------------- Options ------------------------------- #
- X
- X####### The following are the only parts of the file you should need to edit.
- X
- X# ------ Generic options ------ #
- X
- X# Choose the device(s) to include. See gdevs.mak for details.
- X
- XDEVICES=xenix
- X
- X# Choose generic configuration options.
- X
- X# -DDEBUG
- X# includes debugging features (-Z switch) in the code.
- X# Code runs substantially slower even if no debugging switches
- X# are set.
- X# -DNOPRIVATE
- X# makes private (static) procedures and variables public,
- X# so they are visible to the debugger and profiler.
- X# No execution time or space penalty.
- X
- XGENOPT=
- X
- X# ------ Platform-specific options ------ #
- X
- X# Define the name of the C compiler.
- X
- XCC=gcc
- X
- X# Define the other compilation flags.
- X# Add -DBSD4_2 for 4.2bsd systems.
- X# Add -DSYSV for System V.
- X# We don't include -ansi, because this gets in the way of the platform-
- X# specific stuff that <math.h> typically needs.
- X# If you are running on SunOS 4.0.x, you must add a -D for the machine
- X# type, or /usr/include/sys/ieeefp.h will fail to define
- X# fp_direction_type, and so <math.h> won't pass the compiler, and so
- X# zarith.c and many other files won't compile. The right -D symbol for
- X# the Sun-4 and SparcStation is -Dsparc; for the Sun-3, it is mc68000.
- X
- XCFLAGS= -O -DSYSV -fstrength-reduce -finline-functions -fkeep-inline-functions
- X
- X# Define platform flags for ld.
- X# Most Unix systems accept -X, but some don't.
- X# Sun OS4.n may need -Bstatic.
- X
- XLDPLAT=
- X
- X# ---------------------------- End of options --------------------------- #
- X
- X# Define the name of the makefile -- used in dependencies.
- X
- XMAKEFILE=unix-gcc.mak
- X
- X# Define the extensions for the object and executable files.
- X
- XOBJ=o
- XXE=
- X
- X# Define the ANSI-to-K&R dependency. (gcc accepts ANSI syntax.)
- X
- XAK=
- X
- X# Define the compilation rules.
- X
- XCCFLAGS=$(GENOPT) $(CFLAGS)
- X
- X.c.o:
- X $(CC) $(CCFLAGS) -c $*.c
- X
- XCCNA=$(CC) $(CCFLAGS) -c
- X
- X# --------------------------- Generic makefile ---------------------------- #
- X
- X# The remainder of the makefile (ghost.mak, gdevs.mak, and unixtail.mak)
- X# is generic. tar_gs concatenates all these together.
- X# Copyright (C) 1989, 1990 Aladdin Enterprises. All rights reserved.
- X# Distributed by Free Software Foundation, Inc.
- X#
- X# This file is part of Ghostscript.
- X#
- X# Ghostscript is distributed in the hope that it will be useful, but
- X# WITHOUT ANY WARRANTY. No author or distributor accepts responsibility
- X# to anyone for the consequences of using it or for whether it serves any
- X# particular purpose or works at all, unless he says so in writing. Refer
- X# to the Ghostscript General Public License for full details.
- X#
- X# Everyone is granted permission to copy, modify and redistribute
- X# Ghostscript, but only under the conditions described in the Ghostscript
- X# General Public License. A copy of this license is supposed to have been
- X# given to you along with Ghostscript so you can know your rights and
- X# responsibilities. It should be in a file named COPYING. Among other
- X# things, the copyright notice and this notice must be preserved on all
- X# copies.
- X
- X# Generic makefile for Ghostscript.
- X# The platform-specific makefiles 'include' this file.
- X# They define the following symbols:
- X# XE - the extension for executable files (e.g., null or .exe).
- X# OBJ - the extension for relocatable object files (e.g., o or obj).
- X# CCNA - the non-ANSI C invocation for files that on some platforms
- X# include in-line assembly code or other non-standard
- X# constructs. Currently this is needed on every file that
- X# includes sstorei.h.
- X# AK - if source files must be converted from ANSI to K&R syntax,
- X# this is ansi2knr$(XE); if not, it is null.
- X
- Xdefault: gs$(XE)
- X
- Xtest: gt$(XE)
- X
- Xclean:
- X rm -f *.$(OBJ) *.a core
- X rm -f _temp_.* *.dev libc*.tl *.map gdevs.h gdevs.tl
- X rm -f ansi2knr$(XE)
- X rm -f gs$(XE) gs.sym
- X
- Xansi2knr$(XE):
- X cc -o ansi2knr$(XE) -O ansi2knr.c
- X
- X# Note: Unix uses malloc.h and memory.h;
- X# Turbo C uses alloc.h, stdlib.h, and mem.h.
- X# 4.2bsd uses strings.h; other systems use string.h.
- X# gcc on VMS doesn't have a math.h.
- X# We handle this by using local include files called
- X# malloc_.h, math_.h, memory_.h, and string_.h
- X# that perform appropriate indirection.
- X
- X# -------------------------------- Library -------------------------------- #
- X
- XGX=$(AK) std.h gx.h
- XGXERR=$(GX) gserrors.h
- X
- X# High-level facilities
- X
- Xgschar.$(OBJ): gschar.c $(GXERR) gxfixed.h gxmatrix.h gzdevice.h gxdevmem.h gxfont.h gxchar.h gzpath.h gzcolor.h gzstate.h
- X
- Xgscolor.$(OBJ): gscolor.c $(GXERR) gxfixed.h gxmatrix.h gxdevice.h gzstate.h gzcolor.h gzhalfto.h
- X
- Xgscoord.$(OBJ): gscoord.c $(GXERR) gxfixed.h gxmatrix.h gzdevice.h gzstate.h gscoord.h
- X
- Xgsdevice.$(OBJ): gsdevice.c $(GXERR) gxfixed.h gxmatrix.h gxbitmap.h gxdevmem.h gzstate.h gzdevice.h
- X
- Xgsfile.$(OBJ): gsfile.c $(GXERR) gsmatrix.h gxdevice.h gxdevmem.h
- X
- Xgsfont.$(OBJ): gsfont.c $(GXERR) gxdevice.h gxfixed.h gxmatrix.h gxfont.h gzstate.h
- X
- Xgsimage.$(OBJ): gsimage.c $(GXERR) gxfixed.h gxmatrix.h gspaint.h gzcolor.h gzdevice.h gzpath.h gzstate.h gximage.h
- X
- Xgsim2out.$(OBJ): gsim2out.c $(GXERR)
- X
- Xgsline.$(OBJ): gsline.c $(GXERR) gxfixed.h gxmatrix.h gzstate.h gzline.h
- X
- Xgsmatrix.$(OBJ): gsmatrix.c $(GXERR) gxfixed.h gxmatrix.h
- X
- Xgsmisc.$(OBJ): gsmisc.c $(GX)
- X
- Xgspaint.$(OBJ): gspaint.c $(GX) gxfixed.h gxmatrix.h gspaint.h gzpath.h gzstate.h gzdevice.h gximage.h
- X
- Xgspath.$(OBJ): gspath.c $(GXERR) gxfixed.h gxmatrix.h gxpath.h gzstate.h
- X
- Xgspath2.$(OBJ): gspath2.c $(GXERR) gspath.h gxfixed.h gxmatrix.h gzstate.h gzpath.h gzdevice.h
- X
- Xgsstate.$(OBJ): gsstate.c $(GXERR) gxfixed.h gxmatrix.h gzstate.h gzcolor.h gzdevice.h gzhalfto.h gzline.h gzpath.h
- X
- X# Low-level facilities
- X
- Xgxcache.$(OBJ): gxcache.c $(GX) gserrors.h gxfixed.h gxmatrix.h gspaint.h gzdevice.h gzcolor.h gxdevmem.h gxfont.h gxchar.h gzstate.h gzpath.h
- X
- Xgxcolor.$(OBJ): gxcolor.c $(GX) gxfixed.h gxmatrix.h gxdevice.h gzcolor.h gzhalfto.h
- X
- Xgxdraw.$(OBJ): gxdraw.c $(GX) gxfixed.h gxmatrix.h gxbitmap.h gzcolor.h gzdevice.h gzstate.h
- X
- Xgxfill.$(OBJ): gxfill.c $(GXERR) gxfixed.h gxmatrix.h gxdevice.h gzcolor.h gzpath.h gzstate.h
- X
- Xgxht.$(OBJ): gxht.c $(GXERR) gxfixed.h gxmatrix.h gxbitmap.h gzstate.h gzcolor.h gzdevice.h gzhalfto.h
- X
- Xgxpath.$(OBJ): gxpath.c $(GXERR) gxfixed.h gzpath.h
- X
- Xgxpath2.$(OBJ): gxpath2.c $(GXERR) gxfixed.h gzpath.h
- X
- Xgxstroke.$(OBJ): gxstroke.c $(GXERR) gxfixed.h gxmatrix.h gzstate.h gzcolor.h gzdevice.h gzline.h gzpath.h
- X
- X# The "memory" device
- X
- Xgdevmem.$(OBJ): gdevmem.c $(AK) gs.h gxbitmap.h gsmatrix.h gxdevice.h gxdevmem.h
- X $(CCNA) gdevmem.c
- X
- X# Files dependent on the set of installed devices.
- X# Generating gdevs.h also generates gdevs.tl.
- X
- Xgdevs.h: gdevs.mak $(MAKEFILE)
- X gsconfig $(DEVICES)
- X
- Xgdevs.$(OBJ): gdevs.c $(AK) gdevs.h
- X
- X# On Unix, we pre-link all of the library except the back end.
- X# On MS-DOS, we have to do the whole thing at once.
- X
- XLIB=gschar.$(OBJ) gscolor.$(OBJ) gscoord.$(OBJ) gsdevice.$(OBJ) \
- X gsfile.$(OBJ) gsfont.$(OBJ) gsimage.$(OBJ) gsim2out.$(OBJ) \
- X gsline.$(OBJ) gsmatrix.$(OBJ) gsmisc.$(OBJ) \
- X gspaint.$(OBJ) gspath.$(OBJ) gspath2.$(OBJ) gsstate.$(OBJ) \
- X gxcache.$(OBJ) gxcolor.$(OBJ) gxdraw.$(OBJ) gxfill.$(OBJ) \
- X gxht.$(OBJ) gxpath.$(OBJ) gxpath2.$(OBJ) gxstroke.$(OBJ) \
- X gdevmem.$(OBJ) gdevs.$(OBJ)
- X
- X# ------------------------------ Interpreter ------------------------------ #
- X
- X# Non-graphics utilities
- X
- XGH=$(AK) ghost.h
- X
- Xialloc.$(OBJ): ialloc.c $(AK) std.h alloc.h
- X
- Xidebug.$(OBJ): idebug.c $(GH) name.h
- X
- Xidict.$(OBJ): idict.c $(GH) alloc.h errors.h name.h store.h dict.h
- X
- Xiinit.$(OBJ): iinit.c $(GH) dict.h oper.h store.h
- X
- Xiname.$(OBJ): iname.c $(GH) alloc.h errors.h name.h store.h
- X
- Xinterp.$(OBJ): interp.c $(GH) errors.h name.h dict.h oper.h store.h sstorei.h stream.h
- X $(CCNA) interp.c
- X
- Xiscan.$(OBJ): iscan.c $(GH) alloc.h dict.h errors.h store.h stream.h
- X
- Xiutil.$(OBJ): iutil.c $(GH) errors.h alloc.h store.h gsmatrix.h gxdevice.h gzcolor.h
- X
- Xstream.$(OBJ): stream.c $(AK) std.h stream.h
- X
- X# Non-graphics operators
- X
- XOP=$(GH) errors.h oper.h
- X
- Xzarith.$(OBJ): zarith.c $(OP) store.h
- X
- Xzarray.$(OBJ): zarray.c $(OP) alloc.h store.h sstorei.h
- X $(CCNA) zarray.c
- X
- Xzcontrol.$(OBJ): zcontrol.c $(OP) estack.h store.h sstorei.h
- X $(CCNA) zcontrol.c
- X
- Xzdict.$(OBJ): zdict.c $(OP) dict.h store.h
- X
- Xzfile.$(OBJ): zfile.c $(OP) alloc.h stream.h store.h gsmatrix.h gxdevice.h gxdevmem.h
- X
- Xzgeneric.$(OBJ): zgeneric.c $(OP) dict.h estack.h store.h
- X
- Xzmath.$(OBJ): zmath.c $(OP) store.h
- X
- Xzmisc.$(OBJ): zmisc.c $(OP) alloc.h dict.h store.h
- X
- Xzrelbit.$(OBJ): zrelbit.c $(OP) store.h sstorei.h
- X $(CCNA) zrelbit.c
- X
- Xzstack.$(OBJ): zstack.c $(OP) store.h sstorei.h
- X $(CCNA) zstack.c
- X
- Xzstring.$(OBJ): zstring.c $(OP) alloc.h store.h stream.h
- X
- Xztype.$(OBJ): ztype.c $(OP) stream.h store.h
- X
- Xzvmem.$(OBJ): zvmem.c $(OP) alloc.h state.h store.h gsmatrix.h gsstate.h
- X
- X# Graphics operators
- X
- Xzchar.$(OBJ): zchar.c $(OP) gsmatrix.h gschar.h gxdevice.h gxfont.h alloc.h font.h estack.h state.h store.h
- X
- Xzcolor.$(OBJ): zcolor.c $(OP) alloc.h gsmatrix.h gsstate.h state.h store.h
- X
- Xzdevice.$(OBJ): zdevice.c $(OP) alloc.h state.h gsmatrix.h gsstate.h gxdevice.h store.h
- X
- Xzfont.$(OBJ): zfont.c $(OP) gsmatrix.h gxdevice.h gxfont.h alloc.h font.h dict.h state.h store.h
- X
- Xzgstate.$(OBJ): zgstate.c $(OP) alloc.h gsmatrix.h gsstate.h state.h store.h
- X
- Xzht.$(OBJ): zht.c $(OP) alloc.h estack.h gsmatrix.h gsstate.h state.h store.h
- X
- Xzmatrix.$(OBJ): zmatrix.c $(OP) gsmatrix.h state.h gscoord.h store.h
- X
- Xzpaint.$(OBJ): zpaint.c $(OP) alloc.h estack.h gsmatrix.h gspaint.h state.h store.h
- X
- Xzpath.$(OBJ): zpath.c $(OP) gsmatrix.h gspath.h state.h store.h
- X
- Xzpath2.$(OBJ): zpath2.c $(OP) alloc.h estack.h gspath.h state.h store.h
- X
- X# Linking
- X
- XINT=ialloc.$(OBJ) idebug.$(OBJ) idict.$(OBJ) iinit.$(OBJ) iname.$(OBJ) \
- X interp.$(OBJ) iscan.$(OBJ) iutil.$(OBJ) stream.$(OBJ) \
- X zarith.$(OBJ) zarray.$(OBJ) zcontrol.$(OBJ) zdict.$(OBJ) zfile.$(OBJ) \
- X zgeneric.$(OBJ) zmath.$(OBJ) zmisc.$(OBJ) zrelbit.$(OBJ) \
- X zstack.$(OBJ) zstring.$(OBJ) ztype.$(OBJ) zvmem.$(OBJ) \
- X zchar.$(OBJ) zcolor.$(OBJ) zfont.$(OBJ) zdevice.$(OBJ) zgstate.$(OBJ) \
- X zht.$(OBJ) zmatrix.$(OBJ) zpaint.$(OBJ) zpath.$(OBJ) zpath2.$(OBJ)
- X
- X# ----------------------------- Main program ------------------------------ #
- X
- X# Utilities shared between platforms
- X
- Xgsmain.$(OBJ): gsmain.c $(GX) gsmatrix.h gxdevice.h
- X
- X# Library test program driver
- X
- Xgt.$(OBJ): gt.c $(GX) gsmatrix.h gsstate.h gscoord.h gspaint.h gspath.h gxdevice.h
- X
- X# Interpreter main program
- X
- Xgs.$(OBJ): gs.c $(GH) alloc.h store.h stream.h
- X# Copyright (C) 1989, 1990 Aladdin Enterprises. All rights reserved.
- X# Distributed by Free Software Foundation, Inc.
- X#
- X# This file is part of Ghostscript.
- X#
- X# Ghostscript is distributed in the hope that it will be useful, but
- X# WITHOUT ANY WARRANTY. No author or distributor accepts responsibility
- X# to anyone for the consequences of using it or for whether it serves any
- X# particular purpose or works at all, unless he says so in writing. Refer
- X# to the Ghostscript General Public License for full details.
- X#
- X# Everyone is granted permission to copy, modify and redistribute
- X# Ghostscript, but only under the conditions described in the Ghostscript
- X# General Public License. A copy of this license is supposed to have been
- X# given to you along with Ghostscript so you can know your rights and
- X# responsibilities. It should be in a file named COPYING. Among other
- X# things, the copyright notice and this notice must be preserved on all
- X# copies.
- X
- X# makefile for Ghostscript device drivers.
- X
- X# -------------------------------- Catalog ------------------------------- #
- X
- X# It is possible to build Ghostscript with an arbitrary collection of
- X# device drivers, although many drivers are supported only on a subset
- X# of the target platforms. The currently available drivers are:
- X
- X# Displays:
- X# bgi Borland Graphics Interface [MS-DOS only]
- X# ega EGA display using direct addressing [MS-DOS only]
- X# ega_bios EGA display using BIOS calls (very slow) [MS-DOS only]
- X# x11 X Windows version 11, release >=3 [Unix only]
- X# Printers:
- X# deskjet H-P DeskJet [MS-DOS only]
- X# epson Epson dot matrix printers [MS-DOS only]
- X
- X# If you add drivers, it would be nice if you kept each list
- X# in alphabetical order.
- X
- X# Each platform-specific makefile should contain a line of the form
- X# DEVICES=<dev1> ... <devn>
- X# where dev1 ... devn are the devices to be included in the build.
- X# dev1 will be used as the default device.
- X# This line should appear before the lines
- X# (!)include gdevs.mak
- X# (!)include ghost.mak
- X# The rule for constructing the final executable should include gdevs.tl
- X# as one of the files on which the executable depends, and the executable
- X# must be linked with all the files named in gdevs.tl.
- X
- X# ---------------------------- End of catalog ---------------------------- #
- X
- X# If you want to add a new device driver, the examples below should be
- X# enough of a guide to the correct form for the makefile rules.
- X
- X# All device drivers depend on the following:
- X
- XGDEV=$(AK) gx.h gsmatrix.h gxbitmap.h gxdevice.h
- X
- X###### ----------------------- The EGA device ----------------------- ######
- X
- Xega_=gdevegad.$(OBJ) gdevegaa.$(OBJ)
- Xega.dev: $(ega_)
- X gssetdev ega.dev $(ega_)
- X
- Xega_bios_=gdevegab.$(OBJ) gdevegaa.$(OBJ)
- Xega_bios.dev: $(ega_bios_)
- X gssetdev ega_bios.dev $(ega_bios_)
- X
- XETEST=ega.$(OBJ) trace.$(OBJ) $(ega_)
- Xega.exe: $(ETEST) libc$(MM).tl
- X tlink /m /l $(LIBDIR)\c0$(MM) @ega.tl @libc$(MM).tl
- X
- Xega.$(OBJ): ega.c $(GDEV)
- X
- X# Note: gdevega.h includes gs.h, gsmatrix.h, gxbitmap.h, and gxdevice.h.
- X# There is no way to express this indirect dependency in the makefile.
- X
- XGDEVEGAH=gs.h gdevega.h $(GDEV)
- X
- Xgdevegaa.$(OBJ): gdevegaa.asm
- X
- Xgdevegab.$(OBJ): gdevegab.c $(GDEVEGAH)
- X $(CCNA) $*
- X
- Xgdevegad.$(OBJ): gdevegad.c $(GDEVEGAH)
- X $(CCNA) $*
- X
- X###### --------- The BGI (Borland Graphics Interface) device -------- ######
- X
- Xbgi_=gdevbgi.$(OBJ)
- Xbgi.dev: $(bgi_)
- X gssetdev bgi.dev $(bgi_)
- X
- Xgdevbgi.$(OBJ): gdevbgi.c $(GDEV)
- X
- X###### --------------- Memory-buffered printer devices --------------- ######
- X
- Xgvirtmem.$(OBJ): gvirtmem.c gvirtmem.h
- X
- X# Virtual memory test program -- requires VMDEBUG
- X
- Xgvm.exe: gvirtmem.$(OBJ) trace.$(OBJ)
- X tlink /m /l $(LIBDIR)\c0$(MM) gvirtmem trace,gvm,gvm,$(LIBDIR)\c$(MM)
- X
- XPDEVH=$(GDEV) gxdevmem.h gdevprn.h
- X
- X### ------------------ The H-P DeskJet printer device ------------------ ###
- X
- Xdeskjet_=gdevdjet.$(OBJ) gvirtmem.$(OBJ)
- Xdeskjet.dev: $(deskjet_)
- X gssetdev deskjet.dev $(deskjet_)
- X
- Xgdevdjet.$(OBJ): gdevdjet.c $(PDEVH)
- X
- X### ----------------- The generic Epson printer device ----------------- ###
- X
- Xepson_=gdevepsn.$(OBJ) gvirtmem.$(OBJ)
- Xepson.dev: $(epson_)
- X gssetdev epson.dev $(epson_)
- X
- Xgdevepsn.$(OBJ): gdevepsn.c $(PDEVH)
- X
- X###### ----------------------- The Xenix device ----------------------- ######
- X
- Xxenix_=gdevxenix.$(OBJ)
- Xxenix.dev: $(xenix_)
- X gssetdev xenix.dev $(xenix_)
- X
- Xgdevxenix.$(OBJ): gdevxenix.c $(GDEV) gdevxenix.h
- X
- X# Copyright (C) 1990 Aladdin Enterprises. All rights reserved.
- X# Distributed by Free Software Foundation, Inc.
- X#
- X# This file is part of Ghostscript.
- X#
- X# Ghostscript is distributed in the hope that it will be useful, but
- X# WITHOUT ANY WARRANTY. No author or distributor accepts responsibility
- X# to anyone for the consequences of using it or for whether it serves any
- X# particular purpose or works at all, unless he says so in writing. Refer
- X# to the Ghostscript General Public License for full details.
- X#
- X# Everyone is granted permission to copy, modify and redistribute
- X# Ghostscript, but only under the conditions described in the Ghostscript
- X# General Public License. A copy of this license is supposed to have been
- X# given to you along with Ghostscript so you can know your rights and
- X# responsibilities. It should be in a file named COPYING. Among other
- X# things, the copyright notice and this notice must be preserved on all
- X# copies.
- X
- X# Partial makefile for Ghostscript, common to all Unix configurations.
- X
- X# This is the last part of the makefile for Unix configurations.
- X# Since Unix make doesn't have an 'include' facility, we concatenate
- X# the various parts of the makefile together by brute force (in tar_gs).
- X
- X# -------------------------------- Library -------------------------------- #
- X
- X## The Unix platform
- X
- XPLATUNIX=gp_unix.$(OBJ)
- X
- Xgp_unix.$(OBJ): gp_unix.c
- X
- X# ----------------------------- Main program ------------------------------ #
- X
- X# (Dummy) tracing package
- X
- Xutrace.$(OBJ): utrace.c
- X
- X# Main program
- X
- XALLUNIX=gsmain.$(OBJ) utrace.$(OBJ) $(LIB) $(PLATUNIX)
- X
- X# Library test programs
- X
- XGTUNIX=gt.$(OBJ) $(ALLUNIX)
- Xgt: $(GTUNIX) gdevs.tl
- X $(CC) $(CFLAGS) $(LDPLAT) -o gt $(GTUNIX) `cat gdevs.tl` -lx -lm
- X
- X# Interpreter main program
- X
- XGSUNIX=gs.$(OBJ) $(INT) $(ALLUNIX)
- Xgs: $(GSUNIX) gdevs.tl
- X $(CC) $(CFLAGS) $(LDPLAT) -o gs $(GSUNIX) `cat gdevs.tl` -lx -lm
- SHAR_EOF
- chmod 0644 makefile.gcc || echo "restore of makefile.gcc fails"
- set `wc -c makefile.gcc`;Sum=$1
- if test "$Sum" != "17693"
- then echo original size 17693, current size $Sum;fi
- fi
- exit 0
- --
- Glenn Geers | "So when it's over, we're back to people.
- Department of Theoretical Physics | Just to prove that human touch can have
- The University of Sydney | no equal."
- Sydney NSW 2006 Australia | - Basia Trzetrzelewska, 'Prime Time TV'
-