59da01dcb4ade6b2d473abc1b60829b589e06e9c
[xscreensaver] / hacks / Makefile.in
1 # hacks/Makefile.in --- xscreensaver, Copyright (c) 1997-2005 Jamie Zawinski.
2 # the `../configure' script generates `hacks/Makefile' from this file.
3
4 @SET_MAKE@
5 .SUFFIXES:
6 .SUFFIXES: .c .o
7
8 srcdir          = @srcdir@
9 VPATH           = @srcdir@
10 top_srcdir      = @top_srcdir@
11 top_builddir    = ..
12
13 install_prefix  =
14 prefix          = @prefix@
15 exec_prefix     = @exec_prefix@
16 bindir          = @bindir@
17 datarootdir     = @datarootdir@
18 datadir         = @datadir@
19 mandir          = @mandir@
20 libexecdir      = @libexecdir@
21 mansuffix       = 6
22 manNdir         = $(mandir)/man$(mansuffix)
23
24 HACKDIR         = @HACKDIR@
25 HACK_CONF_DIR   = @HACK_CONF_DIR@
26
27 CC              = @CC@
28 CFLAGS          = @CFLAGS@
29 LDFLAGS         = @LDFLAGS@
30 DEFS            = -DSTANDALONE @DEFS@
31 LIBS            = @LIBS@
32 PERL            = @PERL@
33
34 DEPEND          = @DEPEND@
35 DEPEND_FLAGS    = @DEPEND_FLAGS@
36 DEPEND_DEFINES  = @DEPEND_DEFINES@
37
38 SHELL           = /bin/sh
39 INSTALL         = @INSTALL@
40 INSTALL_PROGRAM = @INSTALL_PROGRAM@
41 INSTALL_SCRIPT  = @INSTALL_SCRIPT@
42 INSTALL_DATA    = @INSTALL_DATA@
43 INSTALL_DIRS    = @INSTALL_DIRS@
44
45 X_CFLAGS        = @X_CFLAGS@
46 X_LIBS          = @X_LIBS@
47 X_PRE_LIBS      = @X_PRE_LIBS@
48 X_EXTRA_LIBS    = @X_EXTRA_LIBS@
49 XMU_LIBS        = @XMU_LIBS@
50
51 # Note: see comment in ../driver/Makefile.in for explanation of X_LIBS, etc.
52 #
53 HACK_PRE        = $(LIBS) $(X_LIBS)
54 HACK_POST     = $(X_PRE_LIBS) -lXt -lX11 $(XMU_LIBS) -lXext $(X_EXTRA_LIBS) -lm
55 HACK_LIBS       = $(HACK_PRE)            @HACK_LIBS@ $(HACK_POST)
56 XPM_LIBS        = $(HACK_PRE) @XPM_LIBS@ @HACK_LIBS@ $(HACK_POST)
57 JPEG_LIBS       = @JPEG_LIBS@
58 XLOCK_LIBS      = $(HACK_LIBS)
59 PTY_LIBS        = @PTY_LIBS@
60 MINIXPM         = $(UTILS_BIN)/minixpm.o
61
62 UTILS_SRC       = $(srcdir)/../utils
63 UTILS_BIN       = ../utils
64
65 INCLUDES        = -I. -I$(srcdir) -I$(UTILS_SRC) -I.. @INCLUDES@
66
67 UTIL_SRCS       = $(UTILS_SRC)/alpha.c $(UTILS_SRC)/colors.c \
68                   $(UTILS_SRC)/grabscreen.c $(UTILS_SRC)/grabclient.c \
69                   $(UTILS_SRC)/hsv.c $(UTILS_SRC)/resources.c \
70                   $(UTILS_SRC)/spline.c $(UTILS_SRC)/usleep.c \
71                   $(UTILS_SRC)/visual.c $(UTILS_SRC)/logo.c \
72                   $(UTILS_SRC)/minixpm.c \
73                   $(UTILS_SRC)/yarandom.c $(UTILS_SRC)/erase.c \
74                   $(UTILS_SRC)/xshm.c $(UTILS_SRC)/xdbe.c
75 UTIL_OBJS       = $(UTILS_BIN)/alpha.o $(UTILS_BIN)/colors.o \
76                   $(UTILS_BIN)/grabscreen.o $(UTILS_BIN)/grabclient.o \
77                   $(UTILS_BIN)/hsv.o $(UTILS_BIN)/resources.o \
78                   $(UTILS_BIN)/spline.o $(UTILS_BIN)/usleep.o \
79                   $(UTILS_BIN)/visual.o $(UTILS_BIN)/logo.o \
80                   $(UTILS_SRC)/minixpm.c \
81                   $(UTILS_BIN)/yarandom.o $(UTILS_BIN)/erase.o \
82                   $(UTILS_BIN)/xshm.o $(UTILS_BIN)/xdbe.o \
83                   $(UTILS_BIN)/colorbars.o
84
85 SRCS            = attraction.c blitspin.c bouboule.c braid.c bubbles.c \
86                   bubbles-default.c decayscreen.c deco.c drift.c flag.c \
87                   flame.c forest.c vines.c galaxy.c grav.c greynetic.c \
88                   halo.c helix.c hopalong.c hypercube.c ifs.c imsmap.c \
89                   julia.c kaleidescope.c laser.c lightning.c lisa.c lmorph.c \
90                   maze.c moire.c noseguy.c pedal.c penrose.c pyro.c qix.c \
91                   rocks.c rorschach.c screenhack.c sierpinski.c slidescreen.c \
92                   slip.c sphere.c spiral.c strange.c swirl.c xlockmore.c \
93                   fps.c goop.c starfish.c munch.c fadeplot.c \
94                   rd-bomb.c coral.c mountain.c triangle.c lissie.c worm.c \
95                   rotor.c ant.c xjack.c xlyap.c xscreensaver-sgigl.c \
96                   cynosure.c moire2.c flow.c epicycle.c interference.c \
97                   truchet.c bsod.c crystal.c discrete.c distort.c kumppa.c \
98                   demon.c loop.c t3d.c penetrate.c deluxe.c compass.c \
99                   squiral.c xflame.c wander.c spotlight.c critical.c \
100                   phosphor.c xmatrix.c petri.c shadebobs.c xsublim.c ccurve.c \
101                   blaster.c bumps.c ripples.c xspirograph.c \
102                   nerverot.c xrayswarm.c hyperball.c zoom.c whirlwindwarp.c \
103                   rotzoomer.c whirlygig.c speedmine.c vermiculate.c \
104                   xpm-pixmap.c webcollage-helper.c twang.c apollonian.c \
105                   euler2d.c juggle.c polyominoes.c thornbird.c fluidballs.c \
106                   anemone.c halftone.c metaballs.c eruption.c popsquares.c \
107                   barcode.c piecewise.c cloudlife.c fontglide.c apple2.c \
108                   apple2-main.c analogtv.c xanalogtv.c pong.c wormhole.c \
109                   pacman.c pacman_ai.c pacman_level.c \
110                   fuzzyflakes.c anemotaxis.c memscroller.c substrate.c \
111                   intermomentary.c fireworkx.c fireworkx_mmx.S fiberlamp.c \
112                   boxfit.c interaggregate.c celtic.c cwaves.c m6502.c \
113                   asm6502.c abstractile.c lcdscrub.c \
114                   webcollage-cocoa.m webcollage-helper-cocoa.m
115 SCRIPTS         = vidwhacker webcollage ljlatest
116
117 # Programs that are mentioned in XScreenSaver.ad, and that have XML files,
118 # but that are not shipped with xscreensaver itself.
119 #
120 EXTERNALS       = cosmos electricsheep extrusion fireflies goban \
121                   sphereeversion ssystem xaos xdaliclock xearth xfishtank \
122                   xmountains xplanet xsnow
123
124 OBJS            = attraction.o blitspin.o bouboule.o braid.o bubbles.o \
125                   bubbles-default.o decayscreen.o deco.o drift.o flag.o \
126                   flame.o forest.o vines.o galaxy.o grav.o greynetic.o \
127                   halo.o helix.o hopalong.o hypercube.o ifs.o imsmap.o \
128                   julia.o kaleidescope.o laser.o lightning.o lisa.o lmorph.o \
129                   maze.o moire.o noseguy.o pedal.o penrose.o pyro.o qix.o \
130                   rocks.o rorschach.o screenhack.o sierpinski.o slidescreen.o \
131                   slip.o sphere.o spiral.o strange.o swirl.o xlockmore.o \
132                   fps.o goop.o starfish.o munch.o fadeplot.o \
133                   rd-bomb.o coral.o mountain.o triangle.o lissie.o worm.o \
134                   rotor.o ant.o xjack.o xlyap.o xscreensaver-sgigl.o \
135                   cynosure.o moire2.o flow.o epicycle.o interference.o \
136                   truchet.o bsod.o crystal.o discrete.o distort.o kumppa.o \
137                   demon.o loop.o t3d.o penetrate.o deluxe.o compass.o \
138                   squiral.o xflame.o wander.o spotlight.o critical.o \
139                   phosphor.o xmatrix.o petri.o shadebobs.o xsublim.o ccurve.o \
140                   blaster.o bumps.o ripples.o xspirograph.o \
141                   nerverot.o xrayswarm.o hyperball.o zoom.o whirlwindwarp.o \
142                   rotzoomer.o whirlygig.o speedmine.o vermiculate.o \
143                   xpm-pixmap.o webcollage-helper.o twang.o apollonian.o \
144                   euler2d.o juggle.o polyominoes.o thornbird.o fluidballs.o \
145                   anemone.o halftone.o metaballs.o eruption.o popsquares.o \
146                   barcode.o piecewise.o cloudlife.o fontglide.o apple2.o \
147                   apple2-main.o analogtv.o xanalogtv.o pong.o wormhole.o \
148                   pacman.o pacman_ai.o pacman_level.o \
149                   fuzzyflakes.o anemotaxis.o memscroller.o substrate.o \
150                   intermomentary.o fireworkx.o fiberlamp.o boxfit.o \
151                   interaggregate.o celtic.o cwaves.o webcollage-cocoa.o \
152                   webcollage-helper-cocoa.o m6502.o asm6502.o abstractile.o \
153                   lcdscrub.o
154
155 EXES            = attraction blitspin bouboule braid decayscreen deco \
156                   drift flame galaxy grav greynetic halo \
157                   helix hopalong ifs imsmap julia kaleidescope \
158                   maze moire noseguy pedal \
159                   penrose pyro qix rocks rorschach sierpinski slidescreen \
160                   slip strange swirl goop starfish munch \
161                   fadeplot rd-bomb coral mountain triangle \
162                   xjack xlyap cynosure moire2 flow epicycle \
163                   interference truchet bsod crystal discrete distort kumppa \
164                   demon loop penetrate deluxe compass squiral xflame \
165                   wander spotlight phosphor xmatrix petri shadebobs \
166                   ccurve blaster bumps ripples xspirograph \
167                   nerverot xrayswarm zoom whirlwindwarp rotzoomer \
168                   speedmine vermiculate twang apollonian euler2d \
169                   polyominoes thornbird  fluidballs anemone halftone \
170                   metaballs eruption popsquares barcode piecewise cloudlife \
171                   fontglide apple2 xanalogtv pong  wormhole \
172                   pacman fuzzyflakes anemotaxis memscroller substrate \
173                   intermomentary fireworkx fiberlamp boxfit interaggregate \
174                   celtic cwaves m6502 abstractile lcdscrub \
175                   @JPEG_EXES@
176 JPEG_EXES       = webcollage-helper
177
178 RETIRED_EXES    = ant bubbles critical flag forest hyperball hypercube laser \
179                   lightning lisa lissie lmorph rotor sphere spiral t3d vines \
180                   whirlygig worm xsublim juggle
181
182 HACK_OBJS_1     = fps.o $(UTILS_BIN)/resources.o $(UTILS_BIN)/visual.o \
183                   $(UTILS_BIN)/usleep.o $(UTILS_BIN)/yarandom.o @XMU_OBJS@
184 HACK_OBJS       = screenhack.o $(HACK_OBJS_1)
185 XLOCK_OBJS      = screenhack.o xlockmore.o $(COLOR_OBJS) $(HACK_OBJS_1)
186 COLOR_OBJS      = $(UTILS_BIN)/hsv.o $(UTILS_BIN)/colors.o
187 GRAB_OBJS       = $(UTILS_BIN)/grabclient.o
188 XSHM_OBJS       = $(UTILS_BIN)/xshm.o
189 XDBE_OBJS       = $(UTILS_BIN)/xdbe.o
190
191 HDRS            = screenhack.h screenhackI.h fps.h fpsI.h xlockmore.h \
192                   xlockmoreI.h automata.h bubbles.h xpm-pixmap.h \
193                   apple2.h analogtv.h pacman.h pacman_ai.h pacman_level.h \
194                   asm6502.h
195 MEN             = anemone.man apollonian.man attraction.man \
196                   blaster.man blitspin.man bouboule.man braid.man bsod.man \
197                   bumps.man ccurve.man compass.man coral.man \
198                   crystal.man cynosure.man decayscreen.man \
199                   deco.man deluxe.man demon.man discrete.man distort.man \
200                   drift.man epicycle.man euler2d.man fadeplot.man \
201                   flame.man flow.man fluidballs.man galaxy.man \
202                   goop.man grav.man greynetic.man halo.man helix.man \
203                   hopalong.man ifs.man imsmap.man \
204                   interference.man julia.man \
205                   kaleidescope.man kumppa.man \
206                   loop.man maze.man moire.man \
207                   moire2.man mountain.man munch.man nerverot.man noseguy.man \
208                   pedal.man penetrate.man penrose.man petri.man phosphor.man \
209                   polyominoes.man pyro.man qix.man rd-bomb.man ripples.man \
210                   rocks.man rorschach.man rotzoomer.man \
211                   shadebobs.man sierpinski.man slidescreen.man slip.man \
212                   speedmine.man \
213                   spotlight.man squiral.man starfish.man strange.man \
214                   swirl.man thornbird.man triangle.man truchet.man \
215                   twang.man vermiculate.man vidwhacker.man \
216                   wander.man webcollage.man whirlwindwarp.man \
217                   xflame.man xjack.man xlyap.man xmatrix.man \
218                   xrayswarm.man xspirograph.man \
219                   zoom.man halftone.man eruption.man metaballs.man \
220                   barcode.man piecewise.man cloudlife.man ljlatest.man \
221                   fontglide.man apple2.man xanalogtv.man pong.man \
222                   wormhole.man pacman.man fuzzyflakes.man \
223                   anemotaxis.man memscroller.man substrate.man \
224                   intermomentary.man fireworkx.man fiberlamp.man boxfit.man \
225                   interaggregate.man celtic.man cwaves.man abstractile.man \
226                   lcdscrub.man
227
228 RETIRED_MEN     = ant.man bubbles.man critical.man flag.man forest.man \
229                   laser.man lightning.man lisa.man lissie.man lmorph.man \
230                   rotor.man sphere.man spiral.man t3d.man vines.man \
231                   whirlygig.man worm.man xsublim.man juggle.man \
232                   hypercube.man hyperball.man
233
234 STAR            = *
235 EXTRAS          = README Makefile.in xml2man.pl m6502.sh .gdbinit \
236                   euler2d.tex check-configs.pl munge-ad.pl \
237                   config/README \
238                   config/$(STAR).xml \
239                   config/$(STAR).dtd \
240                   config/$(STAR).xsd \
241                   images/$(STAR).xbm \
242                   images/$(STAR).xpm \
243                   images/bubbles/$(STAR).pov \
244                   images/bubbles/$(STAR).xpm \
245                   images/noseguy/$(STAR).xbm \
246                   images/noseguy/$(STAR).xpm \
247                   images/m6502/$(STAR).asm \
248                   images/molecules/$(STAR).pdb \
249                   images/pacman/$(STAR).xpm
250
251 VMSFILES        = compile_axp.com compile_decc.com link_axp.com link_decc.com \
252                   vms_axp.opt vms_axp_12.opt vms_decc.opt vms_decc_12.opt
253
254 TARFILES        = $(SRCS) $(HDRS) $(SCRIPTS) $(MEN) $(RETIRED_MEN) \
255                   $(EXTRAS) $(VMSFILES)
256
257
258 default: all
259 all: $(EXES) $(RETIRED_EXES)
260
261 install:   install-program   install-scripts install-xml install-man
262 uninstall: uninstall-program uninstall-xml uninstall-man
263
264 install-strip:
265         $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \
266                 install
267
268 # the hacks, in $HACKDIR
269 install-program:: $(EXES)
270         @if [ ! -d $(install_prefix)$(HACKDIR) ]; then                  \
271           $(INSTALL_DIRS) $(install_prefix)$(HACKDIR) ;                 \
272          fi ;                                                           \
273         for program in $(EXES); do                                      \
274           echo $(INSTALL_PROGRAM) $$program                             \
275             $(install_prefix)$(HACKDIR)/$$program ;                     \
276           $(INSTALL_PROGRAM) $$program                                  \
277             $(install_prefix)$(HACKDIR)/$$program ;                     \
278         done ;                                                          \
279
280 install-scripts: $(SCRIPTS) munge-scripts
281         @for program in $(SCRIPTS); do                                  \
282           if [ -r $$program ] ; then                                    \
283             p=$$program ;                                               \
284           else                                                          \
285             p=$(srcdir)/$$program ;                                     \
286           fi ;                                                          \
287           echo $(INSTALL_SCRIPT) $$p                                    \
288             $(install_prefix)$(HACKDIR)/$$program ;                     \
289           $(INSTALL_SCRIPT) $$p                                         \
290             $(install_prefix)$(HACKDIR)/$$program ;                     \
291         done
292
293 munge-scripts: $(SCRIPTS)
294         @tmp=/tmp/mf.$$$$ ;                                             \
295         perl="${PERL}" ;                                                \
296         rm -f $$tmp ;                                                   \
297         for program in $(SCRIPTS); do                                   \
298           sed "s@^\(#!\)\(/[^ ]*/perl[^ ]*\)\(.*\)\$$@\1$$perl\3@"      \
299               < $(srcdir)/$$program > $$tmp ;                           \
300           if ! cmp -s $(srcdir)/$$program $$tmp ; then                  \
301             echo "$$program: setting interpreter to $$perl" >&2 ;       \
302             cat $$tmp > ./$$program ;                                   \
303           fi ;                                                          \
304         done ;                                                          \
305         rm -f $$tmp
306
307 # When installing man pages, we install "foo.man" as "foo.N" and update
308 # the .TH line in the installed file with one like
309 #
310 #     .TH XScreenSaver N "V.VV (DD-MMM-YYYY)" "X Version 11"
311 #
312 # where N is the manual section suffix.
313 #
314 install-man: $(MEN)
315         @men="$(MEN)" ;                                                 \
316         U=$(UTILS_SRC)/version.h ;                                      \
317         V=`sed -n 's/.*xscreensaver \([0-9]\.[^)]*)\).*/\1/p' < $$U` ;  \
318         T=/tmp/xs$$$$.$(mansuffix) ;                                    \
319         TH=".TH XScreenSaver $(mansuffix) \"$$V\" \"X Version 11\"" ;   \
320         echo "installing man pages: $$TH" ;                             \
321                                                                         \
322         if [ ! -d $(install_prefix)$(manNdir) ]; then                   \
323           $(INSTALL_DIRS) $(install_prefix)$(manNdir) ;                 \
324          fi ;                                                           \
325                                                                         \
326         for man in $$men; do                                            \
327           instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
328           manbase=`echo $$man | sed 's/\.man$$//'` ;    \
329           TH=".TH $$manbase $(mansuffix) \"$$V\" \"X Version 11\" \"XScreenSaver manual\"" ;    \
330           sed -e "s/^\.TH.*/$$TH/"                                      \
331               -e 's@(MANSUFFIX)@($(mansuffix))@g'                       \
332             < $(srcdir)/$$man > $$T ;                                   \
333           echo $(INSTALL_DATA) $(srcdir)/$$man                          \
334            $(install_prefix)$(manNdir)/$$instname ;                     \
335           $(INSTALL_DATA) $$T                                           \
336             $(install_prefix)$(manNdir)/$$instname ;                    \
337         done ;                                                          \
338         rm -f $$T
339
340 install-xml:
341         @dest=$(install_prefix)$(HACK_CONF_DIR) ;                       \
342          if [ ! -d $$dest ]; then                                       \
343            $(INSTALL_DIRS) $$dest ;                                     \
344          fi ;                                                           \
345          src=$(srcdir)/config ;                                         \
346          for file in $(EXES) $(SCRIPTS) $(EXTERNALS) ; do               \
347            if [ -f $$src/$$file.xml ]; then                             \
348              echo $(INSTALL_DATA) $$src/$$file.xml $$dest/$$file.xml ;  \
349                   $(INSTALL_DATA) $$src/$$file.xml $$dest/$$file.xml ;  \
350            fi ;                                                         \
351         done
352
353 uninstall-program:
354         @for program in $(EXES) $(RETIRED_EXES) $(SCRIPTS); do          \
355           echo rm -f $(install_prefix)$(HACKDIR)/$$program ;            \
356           rm -f $(install_prefix)$(HACKDIR)/$$program ;                 \
357         done
358
359 uninstall-man:
360         @men="$(MEN) $(RETIRED_MEN)" ;                                  \
361         for man in $$men; do                                            \
362           instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
363           echo rm -f $(install_prefix)$(manNdir)/$$instname* ;          \
364           rm -f $(install_prefix)$(manNdir)/$$instname* ;               \
365         done
366
367 uninstall-xml:
368         @dest=$(install_prefix)$(HACK_CONF_DIR) ;                       \
369          for file in $(EXES) $(RETIRED_EXES) $(SCRIPTS) $(EXTERNALS) ; do \
370              echo rm -f $$dest/$$file.xml ;                             \
371                   rm -f $$dest/$$file.xml ;                             \
372         done
373
374 clean:
375         -rm -f *.o a.out core $(EXES) $(RETIRED_EXES) m6502.h
376
377 distclean: clean
378         -rm -f Makefile TAGS *~ "#"*
379
380 # Adds all current dependencies to Makefile
381 depend:
382         $(DEPEND) -s '# DO NOT DELETE: updated by make depend'              \
383         $(DEPEND_FLAGS) --                                                  \
384         $(INCLUDES) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) --      \
385         $(SRCS)
386
387 # Adds some dependencies to Makefile.in -- not totally accurate, but pretty
388 # close.  This excludes dependencies on files in /usr/include, etc.  It tries
389 # to include only dependencies on files which are themselves a part of this
390 # package.
391 distdepend:: m6502.h
392         @echo updating dependencies in `pwd`/Makefile.in... ;               \
393         $(DEPEND) -w 0 -f -                                                 \
394         -s '# DO NOT DELETE: updated by make distdepend' $(DEPEND_FLAGS) -- \
395         $(INCLUDES) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) --      \
396         $(SRCS) 2>/dev/null |                                               \
397         sort -d |                                                           \
398         (                                                                   \
399           awk '/^# .*Makefile.in ---/,/^# DO .*distdepend/' < Makefile.in ; \
400           sed -e '/^#.*/d'                                                  \
401               -e 's@ \./@ @g;s@ /[^ ]*@@g;/^.*:$$/d'                        \
402               -e 's@\.\./utils@$$(UTILS_SRC)@g'                             \
403               -e 's@ \([^$$]\)@ $$(srcdir)/\1@g'                            \
404               -e 's@ $$(srcdir)/\(.*config.h\)@ \1@g'                       \
405               -e 's@ $$(srcdir)/\(m6502.h\)@ \1@g' ;                        \
406           echo ''                                                           \
407         ) > /tmp/distdepend.$$$$ &&                                         \
408         mv Makefile.in Makefile.in.bak &&                                   \
409         mv /tmp/distdepend.$$$$ Makefile.in
410
411 TAGS: tags
412 tags:
413         find $(srcdir) -name '*.[chly]' -print | xargs etags -a
414
415 echo_tarfiles:
416         @echo $(TARFILES)
417
418 check_men:
419         @badmen="" ;                                                    \
420          for exe in $(EXES) $(SCRIPTS); do                              \
421            if ! [ -f $(srcdir)/$$exe.man                                \
422                   -o "$$exe" = webcollage-helper ]; then                \
423              badmen="$$badmen $$exe" ;                                  \
424            fi ;                                                         \
425          done ;                                                         \
426          if [ -n "$$badmen" ]; then                                     \
427            echo "" ;                                                    \
428            echo "Warning: The following programs have no manuals:" ;    \
429            echo "" ;                                                    \
430            for m in $$badmen ; do                                       \
431              echo "    $$m" ;                                           \
432            done ;                                                       \
433          fi
434
435 validate_xml:
436         @echo "Validating XML..." ; \
437         cd $(srcdir) ; ./check-configs.pl $(EXES)
438
439 munge_ad_file:
440         @echo "Updating hack list in XScreenSaver.ad.in..." ; \
441         cd $(srcdir) ; ./munge-ad.pl ../driver/XScreenSaver.ad.in
442
443
444 # Rules for generating the VMS makefiles on Unix, so that it doesn't have to
445 # be done by hand...
446 #
447 VMS_AXP_COMPILE_1=$$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE
448 VMS_AXP_COMPILE_2=)/INCL=([],[-],[-.UTILS])
449
450 compile_axp.com: Makefile.in
451         @echo generating $@ from $<...  ;                                   \
452         ( for c in $(SRCS) ; do                                             \
453            c=`echo $$c | tr a-z A-Z` ;                                      \
454            echo "$(VMS_AXP_COMPILE_1)$(VMS_AXP_COMPILE_2) $$c" ;            \
455          done ;                                                             \
456         ) | sort -d > $@
457
458 compile_decc.com: compile_axp.com
459         @echo generating $@ from $<...  ;                                   \
460         sed 's/axp/decc/g' < $< > $@
461
462 #### TODO: generating link_axp.com is kinda tricky...
463
464 link_decc.com: link_axp.com
465         @echo generating $@ from $<...  ;                                   \
466         sed 's/axp/decc/g' < $< > $@
467
468 $(srcdir)/../setup.com: Makefile.in
469         @echo generating $@ from $<...  ;                                   \
470         ( echo '$$! Xscreensaver - definition of various DCL symbols' ;     \
471           echo '$$ set NOON' ;                                              \
472           echo '$$ set def [.HACKS]' ;                                      \
473           echo '$$ mydisk = f$$trnlmn("SYS$$DISK")' ;                       \
474           echo '$$ mydir  = mydisk+f$$directory()' ;                        \
475           ( for c in $(EXES) ; do                                           \
476              c2="$${c}          " ;                                         \
477              c2=`echo "$${c2}" | sed 's/^\(........*\)  $$/\1/'` ;          \
478              echo '$$' "$${c2}:== $$'mydir'$${c}" ;                         \
479              done ;                                                         \
480           ) | sort -d ;                                                     \
481           echo '$$ set def [-.DRIVER]' ;                                    \
482           echo '$$ mydir  = mydisk+f$$directory()' ;                        \
483           echo "$$ xscreensaver :== $$'mydir'xscreensaver" ;                \
484           echo "$$ xscreen*command :== $$'mydir'xscreensaver-command" ;     \
485           echo '$$ set def [-]' ;                                           \
486           echo '$$ exit' ;                                                  \
487           ) > $@
488
489 distdepend:: compile_axp.com compile_decc.com
490 distdepend:: link_axp.com link_decc.com
491 distdepend:: $(srcdir)/../setup.com
492 distdepend:: check_men validate_xml munge_ad_file
493
494
495 # Rules for noticing when the objects from the utils directory are out of
496 # date with respect to their sources, and going and building them according
497 # to the rules in their own Makefile...
498 #
499 $(UTILS_BIN)/alpha.o:           $(UTILS_SRC)/alpha.c
500 $(UTILS_BIN)/colors.o:          $(UTILS_SRC)/colors.c
501 $(UTILS_BIN)/grabclient.o:      $(UTILS_SRC)/grabclient.c
502 $(UTILS_BIN)/hsv.o:             $(UTILS_SRC)/hsv.c
503 $(UTILS_BIN)/resources.o:       $(UTILS_SRC)/resources.c
504 $(UTILS_BIN)/spline.o:          $(UTILS_SRC)/spline.c
505 $(UTILS_BIN)/usleep.o:          $(UTILS_SRC)/usleep.c
506 $(UTILS_BIN)/visual.o:          $(UTILS_SRC)/visual.c
507 $(UTILS_BIN)/xmu.o:             $(UTILS_SRC)/xmu.c
508 $(UTILS_BIN)/logo.o:            $(UTILS_SRC)/logo.c
509 $(UTILS_BIN)/minixpm.o:         $(UTILS_SRC)/minixpm.c
510 $(UTILS_BIN)/yarandom.o:        $(UTILS_SRC)/yarandom.c
511 $(UTILS_BIN)/erase.o:           $(UTILS_SRC)/erase.c
512 $(UTILS_BIN)/xshm.o:            $(UTILS_SRC)/xshm.c
513 $(UTILS_BIN)/xdbe.o:            $(UTILS_SRC)/xdbe.c
514
515 $(UTIL_OBJS):
516         cd $(UTILS_BIN) ; \
517         $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
518
519 # How we build object files in this directory.
520 .c.o:
521         $(CC) -c $(INCLUDES) $(DEFS) $(CFLAGS) $(X_CFLAGS) $<
522
523
524 # Make sure these are regenerated when the version number ticks.
525 screenhack.o: $(UTILS_SRC)/version.h
526
527 # Some abbreviations to keep the lines short...
528 XPM             = xpm-pixmap.o
529 ALP             = $(UTILS_BIN)/alpha.o
530 HSV             = $(UTILS_BIN)/hsv.o
531 SPL             = $(UTILS_BIN)/spline.o
532 LOGO            = $(UTILS_BIN)/logo.o $(UTILS_BIN)/minixpm.o
533 GRAB            = $(GRAB_OBJS)
534 ERASE           = $(UTILS_BIN)/erase.o
535 COL             = $(COLOR_OBJS)
536 SHM             = $(XSHM_OBJS)
537 DBE             = $(XDBE_OBJS)
538 BARS            = $(UTILS_BIN)/colorbars.o $(LOGO)
539 ATV             = analogtv.o $(SHM)
540 APPLE2          = apple2.o $(ATV)
541
542 CC_HACK         = $(CC) $(LDFLAGS)
543
544 xscreensaver-sgigl: xscreensaver-sgigl.c
545         $(CC) $(LDFLAGS) -o $@ $< -I$(UTILS_SRC) $(HACK_PRE) \
546                 $(XMU_LIBS) -lX11 -lXext $(X_EXTRA_LIBS) -lm
547
548
549 # The rules for those hacks which follow the `screenhack.c' API.
550 # If make wasn't such an utter abomination, these could all be combined
551 # into one rule, but we don't live in such a perfect world.  The $< rule
552 # is pretty much useless in the face of more than one dependency, as far
553 # as I can tell.
554 #
555 attraction:     attraction.o    $(HACK_OBJS) $(COL) $(SPL)
556         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SPL) $(HACK_LIBS)
557
558 blitspin:       blitspin.o      $(HACK_OBJS) $(GRAB) $(XPM)
559         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(XPM) $(XPM_LIBS)
560
561 bubbles:        bubbles.o       $(HACK_OBJS) bubbles-default.o $(XPM)
562         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) bubbles-default.o $(XPM) $(XPM_LIBS)
563
564 decayscreen:    decayscreen.o   $(HACK_OBJS) $(GRAB)
565         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(HACK_LIBS)
566
567 deco:           deco.o          $(HACK_OBJS) $(COL)
568         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
569
570 flame:          flame.o         $(HACK_OBJS) $(COL)
571         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
572
573 greynetic:      greynetic.o     $(HACK_OBJS)
574         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
575
576 halo:           halo.o          $(HACK_OBJS) $(COL)
577         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
578
579 helix:          helix.o         $(HACK_OBJS) $(HSV) $(ERASE)
580         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HSV) $(ERASE) $(HACK_LIBS)
581
582 hypercube:      hypercube.o     $(HACK_OBJS)
583         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
584
585 imsmap:         imsmap.o        $(HACK_OBJS) $(COL)
586         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
587
588 kaleidescope:   kaleidescope.o  $(HACK_OBJS)
589         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
590
591 lmorph:         lmorph.o        $(HACK_OBJS)
592         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
593
594 maze:           maze.o          $(HACK_OBJS) $(ERASE) $(LOGO)
595         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(ERASE) $(LOGO) $(HACK_LIBS)
596
597 moire:          moire.o         $(HACK_OBJS) $(COL) $(SHM)
598         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SHM) $(HACK_LIBS)
599
600 moire2:         moire2.o        $(HACK_OBJS) $(COL) $(DBE)
601         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(DBE) $(HACK_LIBS)
602
603 noseguy:        noseguy.o       $(HACK_OBJS) $(XPM)
604         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(XPM) $(XPM_LIBS)
605
606 pedal:          pedal.o         $(HACK_OBJS) $(HSV) $(ERASE)
607         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HSV) $(ERASE) $(HACK_LIBS)
608
609 pyro:           pyro.o          $(HACK_OBJS) $(HSV)
610         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HSV) $(HACK_LIBS)
611
612 qix:            qix.o           $(HACK_OBJS) $(HSV) $(ALP)
613         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HSV) $(ALP) $(HACK_LIBS)
614
615 rocks:          rocks.o         $(HACK_OBJS) $(COL)
616         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
617
618 rorschach:      rorschach.o     $(HACK_OBJS) $(HSV) $(ERASE)
619         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HSV) $(ERASE) $(HACK_LIBS)
620
621 slidescreen:    slidescreen.o   $(HACK_OBJS) $(GRAB)
622         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(HACK_LIBS)
623
624 goop:           goop.o          $(HACK_OBJS) $(HSV) $(ALP) $(SPL)
625         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HSV) $(ALP) $(SPL) $(HACK_LIBS)
626
627 starfish:       starfish.o      $(HACK_OBJS) $(COL) $(SPL)
628         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SPL) $(HACK_LIBS)
629
630 munch:          munch.o         $(HACK_OBJS) $(COL) $(SPL)
631         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SPL) $(HACK_LIBS)
632
633 rd-bomb:        rd-bomb.o       $(HACK_OBJS) $(COL) $(SHM)
634         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SHM) $(HACK_LIBS)
635
636 coral:          coral.o         $(HACK_OBJS) $(COL) $(ERASE)
637         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS)
638
639 xjack:          xjack.o         $(HACK_OBJS)
640         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
641
642 xlyap:          xlyap.o         $(HACK_OBJS) $(COL)
643         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
644
645 cynosure:       cynosure.o      $(HACK_OBJS) $(COL)
646         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
647
648 epicycle:       epicycle.o      $(HACK_OBJS) $(COL) $(ERASE)
649         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS)
650
651 interference:  interference.o   $(HACK_OBJS) $(COL) $(SHM) $(DBE)
652         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SHM) $(DBE) $(HACK_LIBS)
653
654 truchet:         truchet.o      $(HACK_OBJS) $(COL)
655         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
656
657 bsod:           bsod.o          $(HACK_OBJS) $(GRAB) $(APPLE2) $(XPM)
658         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(APPLE2) $(XPM) $(XPM_LIBS)
659
660 apple2:         apple2.o apple2-main.o  $(HACK_OBJS) $(ATV) $(GRAB)
661         $(CC_HACK) -o $@ $@.o   apple2-main.o $(HACK_OBJS) $(ATV) $(GRAB) $(XPM_LIBS) $(PTY_LIBS)
662
663 xanalogtv:      xanalogtv.o     $(HACK_OBJS) $(ATV) $(GRAB) $(XPM)
664         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(ATV) $(GRAB) $(XPM) $(XPM_LIBS) $(HACK_LIBS)
665
666 distort:        distort.o       $(HACK_OBJS) $(GRAB) $(SHM)
667         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS)
668
669 kumppa:         kumppa.o        $(HACK_OBJS) $(DBE)
670         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(DBE) $(HACK_LIBS)
671
672 t3d:            t3d.o           $(HACK_OBJS) $(COL)
673         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
674
675 penetrate:      penetrate.o     $(HACK_OBJS) $(COL)
676         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
677
678 deluxe:         deluxe.o        $(HACK_OBJS) $(ALP) $(COL) $(DBE)
679         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(ALP) $(COL) $(DBE) $(HACK_LIBS)
680
681 compass:        compass.o       $(HACK_OBJS) $(DBE)
682         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(DBE) $(HACK_LIBS)
683
684 squiral:        squiral.o       $(HACK_OBJS) $(COL)
685         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
686
687 xflame:         xflame.o        $(HACK_OBJS) $(SHM) $(XPM)
688         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(SHM) $(XPM) $(XPM_LIBS)
689
690 wander:         wander.o        $(HACK_OBJS) $(COL) $(ERASE)
691         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS)
692
693 spotlight:      spotlight.o     $(HACK_OBJS) $(GRAB)
694         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(HACK_LIBS)
695
696 critical:       critical.o      $(HACK_OBJS) $(COL) $(ERASE)
697         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS)
698
699 phosphor:       phosphor.o      $(HACK_OBJS) $(COL)
700         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS) $(PTY_LIBS)
701
702 xmatrix:        xmatrix.o       $(HACK_OBJS) $(XPM)
703         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(XPM) $(XPM_LIBS)
704
705 petri:          petri.o         $(HACK_OBJS) $(COL) $(SPL)
706         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SPL) $(HACK_LIBS)
707
708 shadebobs:      shadebobs.o     $(HACK_OBJS) $(COL) $(SPL)
709         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SPL) $(HACK_LIBS)
710
711 ccurve:         ccurve.o        $(HACK_OBJS) $(COL) $(SPL)
712         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS)
713
714 blaster:        blaster.o       $(HACK_OBJS)
715         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
716
717 bumps:          bumps.o         $(HACK_OBJS) $(GRAB) $(SHM)
718         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS)
719
720 ripples:        ripples.o       $(HACK_OBJS) $(SHM) $(COL) $(GRAB)
721         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(SHM) $(COL) $(GRAB) $(HACK_LIBS)
722
723 xspirograph:    xspirograph.o   $(HACK_OBJS) $(COL) $(ERASE)
724         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS)
725
726 nerverot:       nerverot.o      $(HACK_OBJS) $(COL)
727         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
728
729 xrayswarm:      xrayswarm.o     $(HACK_OBJS) 
730         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
731
732 hyperball:      hyperball.o     $(HACK_OBJS)
733         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
734
735 zoom:   zoom.o                  $(HACK_OBJS) $(GRAB)
736         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(HACK_LIBS)
737
738 whirlwindwarp:  whirlwindwarp.o $(HACK_OBJS) $(COL)
739         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
740
741 rotzoomer:      rotzoomer.o     $(HACK_OBJS) $(GRAB) $(SHM)
742         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS)
743
744 whirlygig:      whirlygig.o     $(HACK_OBJS) $(DBE) $(COL)
745         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(DBE) $(COL) $(HACK_LIBS)
746
747 speedmine:      speedmine.o     $(HACK_OBJS) $(COL)
748         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
749
750 vermiculate:    vermiculate.o   $(HACK_OBJS) $(COL)
751         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
752
753 twang:          twang.o         $(HACK_OBJS) $(GRAB) $(SHM)
754         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS)
755
756 fluidballs:     fluidballs.o    $(HACK_OBJS) $(DBE)
757         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(DBE) $(HACK_LIBS)
758
759 anemone:        anemone.o       $(HACK_OBJS) $(COL) $(DBE)
760         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(DBE) $(HACK_LIBS)
761
762 halftone:       halftone.o      $(HACK_OBJS) $(COL)
763         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
764
765 metaballs:      metaballs.o     $(HACK_OBJS)
766         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
767
768 eruption:       eruption.o      $(HACK_OBJS)
769         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
770
771 popsquares:     popsquares.o    $(HACK_OBJS) $(DBE) $(COL)
772         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(DBE) $(COL) $(HACK_LIBS)
773
774 barcode:        barcode.o       $(HACK_OBJS) $(HSV)
775         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HSV) $(HACK_LIBS)
776
777 piecewise:      piecewise.o     $(HACK_OBJS) $(COL) $(DBE)
778         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(DBE) $(HACK_LIBS)
779
780 cloudlife:      cloudlife.o     $(HACK_OBJS) $(COL) $(DBE)
781         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(DBE) $(HACK_LIBS)
782
783 fontglide:      fontglide.o     $(HACK_OBJS) $(DBE)
784         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(DBE) $(HACK_LIBS)
785
786 pong:   pong.o  $(HACK_OBJS) $(ATV) $(GRAB) $(XPM)
787         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(ATV) $(GRAB) $(XPM) $(XPM_LIBS) $(HACK_LIBS)
788
789 wormhole:       wormhole.o      $(HACK_OBJS)
790         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
791
792 fuzzyflakes:    fuzzyflakes.o   $(HACK_OBJS)
793         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
794
795 anemotaxis:     anemotaxis.o    $(HACK_OBJS) $(COL) $(DBE)
796         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(DBE) $(HACK_LIBS)
797
798 memscroller:    memscroller.o   $(HACK_OBJS) $(SHM) $(COL)
799         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(SHM) $(COL) $(HACK_LIBS)
800
801 substrate:      substrate.o     $(HACK_OBJS)
802         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
803
804 intermomentary: intermomentary.o $(HACK_OBJS) $(COL)
805         $(CC_HACK) -o $@ $@.o    $(HACK_OBJS) $(COL) $(HACK_LIBS)
806
807 interaggregate: interaggregate.o $(HACK_OBJS) $(COL)
808         $(CC_HACK) -o $@ $@.o    $(HACK_OBJS) $(COL) $(HACK_LIBS)
809
810 fireworkx:      fireworkx.o     $(HACK_OBJS) $(COL)
811         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
812
813 boxfit:         boxfit.o        $(HACK_OBJS) $(COL) $(GRAB)
814         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(GRAB) $(HACK_LIBS)
815
816 ifs:            ifs.o           $(HACK_OBJS) $(COL)
817         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
818
819 celtic:         celtic.o        $(HACK_OBJS) $(COL) $(ERASE)
820         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS)
821
822 cwaves:         cwaves.o        $(HACK_OBJS) $(COL)
823         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
824
825 m6502.h:
826         @echo "building m6502.h from $(srcdir)/images/m6502/*.asm"; \
827         UTILS_SRC="$(UTILS_SRC)" \
828         $(srcdir)/m6502.sh m6502.h $(srcdir)/images/m6502/*.asm
829
830 m6502.o:        m6502.h
831 m6502:          m6502.o         asm6502.o $(HACK_OBJS) $(ATV)
832         $(CC_HACK) -o $@ $@.o   asm6502.o $(HACK_OBJS) $(ATV) $(HACK_LIBS)
833
834 abstractile:    abstractile.o   $(HACK_OBJS) $(COL)
835         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
836
837 lcdscrub:       lcdscrub.o      $(HACK_OBJS)
838         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
839
840 # The rules for those hacks which follow the `xlockmore' API.
841 #
842
843 bouboule:       bouboule.o      $(XLOCK_OBJS)
844         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
845
846 braid:          braid.o         $(XLOCK_OBJS) $(ERASE)
847         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(ERASE) $(HACK_LIBS)
848
849 drift:          drift.o         $(XLOCK_OBJS) $(ERASE)
850         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(ERASE) $(HACK_LIBS)
851
852 flag:           flag.o          $(XLOCK_OBJS) $(XPM)
853         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(XPM) $(XPM_LIBS)
854
855 forest:         forest.o        $(XLOCK_OBJS) $(ERASE)
856         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(ERASE) $(HACK_LIBS)
857
858 vines:          vines.o         $(XLOCK_OBJS) $(ERASE)
859         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(ERASE) $(HACK_LIBS)
860
861 galaxy:         galaxy.o        $(XLOCK_OBJS)
862         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
863
864 grav:           grav.o          $(XLOCK_OBJS)
865         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
866
867 hopalong:       hopalong.o      $(XLOCK_OBJS) $(ERASE)
868         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(ERASE) $(HACK_LIBS)
869
870 julia:          julia.o         $(XLOCK_OBJS)
871         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
872
873 laser:          laser.o         $(XLOCK_OBJS)
874         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
875
876 lightning:      lightning.o     $(XLOCK_OBJS)
877         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
878
879 lisa:           lisa.o          $(XLOCK_OBJS)
880         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
881
882 lissie:         lissie.o        $(XLOCK_OBJS)
883         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
884
885 penrose:        penrose.o       $(XLOCK_OBJS)
886         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
887
888 sierpinski:     sierpinski.o    $(XLOCK_OBJS)
889         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
890
891 slip:           slip.o          $(XLOCK_OBJS) $(GRAB)
892         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(GRAB) $(HACK_LIBS)
893
894 sphere:         sphere.o        $(XLOCK_OBJS)
895         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
896
897 spiral:         spiral.o        $(XLOCK_OBJS)
898         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
899
900 strange:        strange.o       $(XLOCK_OBJS)
901         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
902
903 swirl:          swirl.o         $(XLOCK_OBJS) $(SHM)
904         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(SHM) $(HACK_LIBS)
905
906 fadeplot:       fadeplot.o      $(XLOCK_OBJS)
907         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
908
909 mountain:       mountain.o      $(XLOCK_OBJS)
910         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
911
912 triangle:       triangle.o      $(XLOCK_OBJS)
913         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
914
915 worm:           worm.o          $(XLOCK_OBJS)
916         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
917
918 rotor:          rotor.o         $(XLOCK_OBJS)
919         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
920
921 ant:            ant.o           $(XLOCK_OBJS) $(ERASE)
922         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(ERASE) $(HACK_LIBS)
923
924 demon:          demon.o         $(XLOCK_OBJS)
925         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
926
927 loop:           loop.o          $(XLOCK_OBJS)
928         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
929
930 flow:           flow.o          $(XLOCK_OBJS)
931         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
932
933 discrete:       discrete.o      $(XLOCK_OBJS) $(ERASE)
934         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(ERASE) $(HACK_LIBS)
935
936 crystal:        crystal.o       $(XLOCK_OBJS)
937         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
938
939 apollonian:     apollonian.o    $(XLOCK_OBJS) $(ERASE)
940         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(ERASE) $(HACK_LIBS)
941
942 euler2d:        euler2d.o       $(XLOCK_OBJS)
943         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
944
945 juggle:         juggle.o        $(XLOCK_OBJS)
946         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
947
948 polyominoes:    polyominoes.o   $(XLOCK_OBJS) $(ERASE)
949         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(ERASE) $(HACK_LIBS)
950
951 thornbird:      thornbird.o     $(XLOCK_OBJS)
952         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
953
954 PACOBJS=pacman_ai.o pacman_level.o
955 pacman:         pacman.o        $(PACOBJS) $(XLOCK_OBJS) $(XPM)
956         $(CC_HACK) -o $@ $@.o   $(PACOBJS) $(XLOCK_OBJS) $(XPM) $(XPM_LIBS)
957
958 fiberlamp:      fiberlamp.o     $(XLOCK_OBJS)
959         $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
960
961 # These are not like the others.
962 #
963 xsublim:        xsublim.o       $(HACK_OBJS_1)
964         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS_1) $(HACK_LIBS)
965
966 webcollage-helper: webcollage-helper.o
967         $(CC_HACK) -o $@ $@.o   $(XPM_LIBS) $(JPEG_LIBS)
968
969
970 ##############################################################################
971 #
972 # DO NOT DELETE: updated by make distdepend
973