123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289 |
- #
- # This Plan 9 mkfile is for ``easy'' building.
- # It worked for Ghostscript 8.53.
- #
- # This mkfile consists of two parts: the first part builds the gs executable,
- # the second unpacks the gs distribution and sets configuration parameters.
- #
- # Place this mkfile in the root directory of the gs distribution (the gsX.XX dir)
- # Edit the drivers list below, and mk fake-make to let gs configure
- # itself. Fake-make doesn't actually build very much.
- #
- # Then you can run mk normally.
- #
- # Be sure to have the jpeg, libpng, and zlib subdirectories before starting.
- # These have been included in recent gs tar files so we do not maintain
- # our own anymore.
- #
- # Each time you change the drivers list you must rerun mk fake-make
- # before building.
- #
- # If you want to try out a new GS distribution, you should be able
- # to mk try-X.XX, test it out, and then do mk install-X.XX, where X.XX
- # is the version number (e.g. 5.70). If outside BL, you may have to edit the
- # scripts to remove some local dependencies (e.g. calling outside and the
- # cpu call to thresher, alpha to make mips.h, alpha.h).
- #
- # Recent versions of src/gxshade1.c cause the compiler to run out
- # of registers. Brucee is looking into this. In the meantime, use this
- # replacement:
- #
- # private inline void
- # make_other_poles(patch_curve_t curve[4])
- # {
- # int i, j;
- #
- # for (i = 0; i < 4; i++) {
- # j = (i + 1) % 4;
- # curve[i].control[0].x = (curve[i].vertex.p.x * 2 + curve[j].vertex.p.x);
- # curve[i].control[0].x /= 3;
- # curve[i].control[0].y = (curve[i].vertex.p.y * 2 + curve[j].vertex.p.y);
- # curve[i].control[0].y /= 3;
- # curve[i].control[1].x = (curve[i].vertex.p.x + curve[j].vertex.p.x * 2);
- # curve[i].control[1].y /= 3;
- # curve[i].control[1].y = (curve[i].vertex.p.y + curve[j].vertex.p.y * 2);
- # curve[i].control[1].y /= 3;
- # curve[i].straight = true;
- # }
- # }
- #
- # (the original includes the /3 in the big expressions).
- #
- # src/gxshade6.c also needs editing to remove use of the
- # vlong , operator on some architectures.
- #
- # you may need to change this line in gs/src/gshtscr.c:
- # // sample = (int) (value * max_ht_sample) + max_ht_sample;
- # to
- # sample = (vlong)(value * max_ht_sample) + max_ht_sample;
- </$objtype/mkfile
- BIN=/$objtype/bin
- TARG=gs
- OFILES=\
- obj/gs.$O\
- `{sed 's#^./obj/(.*)\.o .*#obj/\1.$O#' src/ld.tr >[2] /dev/null | sort}
- # The first driver is the default.
- DRIVERS=\
- plan9\
- bj10e\
- bjc600\
- bjc800\
- cdj1600\
- cdj670\
- cdj850\
- cdj890\
- dfaxlow\
- epsonc\
- epswrite\
- inferno\
- jpeg\
- jpeggray\
- laserjet\
- ljet2p\
- ljet3\
- ljet3d\
- ljet4\
- pbm\
- pbmraw\
- pdfwrite\
- pgm\
- pgmraw\
- plan9bm\
- pnm\
- pnmraw\
- ppm\
- ppmraw\
- pswrite\
- stcolor\
- tiffg32d\
- tiffg3\
- tiffg4\
- HFILES=$objtype.h\
- arch.h\
- # enforce some startup conditions
- x=`{mkdir obj >[2]/dev/null; mv jpeg/jmorecfg.h jpeg/jmorecfg.h.save >[2] /dev/null}
- </sys/src/cmd/mkone
- UPDATE=\
- /386/bin/gs\
- /sys/man/1/gs\
- /rc/bin/ps2pdf\
- /rc/bin/pdf2ps\
- /sys/man/1/ps2pdf\
- update:V:
- update $UPDATEFLAGS $UPDATE `{cat lsr}
- CC=pcc
- CFLAGS=-c -DPlan9 -D_POSIX_SOURCE -D_BSD_EXTENSION\
- -I. -Isrc -Ijpeg -Izlib -Iicclib -DT$objtype '-DGS_INIT="gs_init.ps"'
- LD=pcc
- obj/gconfig.$O obj/gconf.$O obj/gscdef.$O\
- obj/gscdefs.$O obj/iconf.$O obj/iconfig.$O: src/gconfig.h
- obj/%.$O: icclib/%.c
- $CC $CFLAGS icclib/$stem.c; mv $stem.$O obj
- obj/%.$O: jpeg/%.c
- $CC $CFLAGS jpeg/$stem.c; mv $stem.$O obj
- obj/%.$O: zlib/%.c
- $CC $CFLAGS zlib/$stem.c; mv $stem.$O obj
- obj/%.$O: src/%.c
- $CC $CFLAGS src/$stem.c; mv $stem.$O obj
- #if possible, use genarch to build $objtype.h; it must run on same cpu type.
- #if not, try to use a default header for the target architecture.
- $objtype.h: $O.genarch
- if(~ $objtype $cputype) {
- ./$O.genarch $target
- rm -f $O.genarch
- }
- if not {
- if (test -r default.$objtype.h)
- cp default.$objtype.h $target && chmod 664 $target
- if not {
- echo 'no default header file for target architecture'
- echo 'run mk on the target architecture to build one'
- exit false
- }
- }
- $O.genarch:U: src/genarch.c
- if(~ $objtype $cputype) {
- rfork e
- objtype=$cputype
- pcc -DHAVE_LONG_LONG -B -o $O.genarch src/genarch.c
- }
- if not
- status=''
- libinstall:V:
- cp lib/* /sys/lib/ghostscript
- nuke clean:V:
- rm -f *.[$OS] obj/* [$OS].out y.tab.? y.debug y.output $TARG src/plan9.mak
- #################################################################################
- fake-make:V: src/plan9.mak src/plan9-aux.mak fakecc
- cp jpeg/jmorecfg.h.save jpeg/jmorecfg.h
- ape/psh -c 'CC=fakecc make -f src/plan9.mak'
- rm -f jpeg/jmorecfg.h
- cp obj/*.c obj/*.h obj/ld.tr src
- rm -f src/arch.h
- rm -f obj/*.o
- rm -f obj/*.c
- rm -f fakecc
- real-make:V: src/plan9.mak src/plan9-aux.mak
- ape/psh -c 'CC=cc make -f src/plan9.mak'
- fakecc:V:
- echo '#!/bin/rc
- if(~ ./obj/genconf $* || ~ ./obj/genarch $* || ~ ./obj/echogs $*) cc $*
- status='''' ' >$target
- chmod +x $target
- src/plan9.mak: src/unixansi.mak /sys/src/cmd/gs/contrib9.mak src/contrib.mak
- devlist='$(DD)'^$DRIVERS^'.dev'
- devlist=$"devlist
- sed 's#^GS_LIB_DEFAULT=.*#GS_LIB_DEFAULT=/sys/lib/ghostscript:/sys/lib/ghostscript/font:/sys/lib/postscript/font#
- s#^XCFLAGS=.*#XCFLAGS=-D_BSD_EXTENSION -DPlan9#
- s#^CFLAGS_STANDARD=.*#CFLAGS_STANDARD=#
- s#^include \$\(.*\)/(.*)#include src/\1#
- s#unix-aux.mak#plan9-aux.mak#
- s#gsdatadir *=.*#gsdatadir=/sys/src/cmd/gs#
- s#DEVICE_DEVS=.*#DEVICE_DEVS='$devlist'#
- s#(DEVICE_DEVS[0-9]+)=.*#\1=#' $prereq >$target
- src/plan9-aux.mak: src/unix-aux.mak
- sed 's#^INCLUDE=.*#INCLUDE=/sys/include/ape#' $prereq >$target
- try-%:V: gs%/$O.out
- bind gs$stem/$O.out /bin/gs
- bind -b gs$stem/lib /sys/lib/ghostscript
- echo 'give it a whirl'
- gs([0-9]+\.[0-9]+)/$O.out:R: gs\1/src
- @{ cd gs$stem1
- # for(i in jpeg zlib libpng)
- # bind -c ../$i $i
- if(! test -f src/ld.tr)
- mk fake-make
- cp ../arch.h .
- rm -f obj/*.c
- mk $O.out
- # for(i in jpeg zlib libpng)
- # unmount $i || status=''
- }
- gs%/src: ghostscript-%.tar.gz
- rm -rf gs$stem
- gunzip < ghostscript-$stem.tar.gz | tar x
- mv ghostscript-$stem gs$stem
- chmod g+w gs$stem/* gs$stem/*/*
- # local drivers
- cp src/gdevifno.c src/gdevplan9.c src/gdevcd8.c gs$stem/src
- # local conventions
- ed gs$stem/lib/gs_init.ps <fixSAFER.ed
- mkdir -p gs$stem/^(jpeg obj zlib libpng)
- # rm -rf gs$stem/^(jpeg obj zlib libpng)^/*
- echo '<../mkfile' >gs$stem/mkfile
- cp default.*.h gs$stem
- @{cd gs$stem; mk startover}
- ghostscript-%.tar.gz:
- #outside
- #hget -o $target http://download.sourceforge.net/ghostscript/$target
- hget -o $target ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/gs^`{echo $stem | sed 's/\.//'}^/$target
- #ftpfs -a $user^'@' ftp.cs.wisc.edu
- #cp /n/ftp/ghost/aladdin/*/ghostscript-$stem.tar.gz .
- startover:V:
- rm -rf obj/*
- rm -f src/ld.tr
- rm -f src/plan9.mak src/plan9-aux.mak
- install-%:V:
- unmount /bin/gs || status=''
- unmount /sys/lib/ghostscript || status=''
- mk installsrc-$stem
- # cpu -h thresher -c 'mk mips.h' || status=''
- # cpu -h alpha -c 'mk alpha.h' || status=''
- mk all
- mk installall
- for(i in lib/*.ps)
- if(! cmp $i /sys/lib/ghostscript/^`{basename $i} >/dev/null)
- cp $i /sys/lib/ghostscript
- cp /sys/lib/ghostscript/pdf_sec-ps.bak /sys/lib/ghostscript/pdf_sec.ps
- installsrc-%:V: gs%/$O.out
- pwd=`{pwd}
- # don't accidentally do this from gsX.XX
- if(! ~ $pwd */gs)
- echo 'i don''t think you meant to do that' && exit oops
- tocopy=(doc examples icclib lib man obj src zlib jpeg libpng)
- if(! cmp src/version.mak gs$stem/src/version.mak) {
- rm -rf $tocopy
- @{cd gs$stem; tar c $tocopy} | tar xT
- mk clean
- }
- status=''
- clean-%:V:
- for (i in gs$stem/*)
- unmount $i >[2]/dev/null || status=''
- rm -rf gs$stem ghostscript-$stem.tar.gz
|