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