http://ftp.ksu.edu.tw/FTP/FreeBSD/distfiles/xscreensaver-4.23.tar.gz
[xscreensaver] / hacks / Makefile.in
index 65630f91b7b02869f336e5963864c38deb905976..0e5fde9522c6d861c7f2613874c761d0499bed41 100644 (file)
@@ -1,4 +1,4 @@
-# hacks/Makefile.in --- xscreensaver, Copyright (c) 1997-1999 Jamie Zawinski.
+# hacks/Makefile.in --- xscreensaver, Copyright (c) 1997-2005 Jamie Zawinski.
 # the `../configure' script generates `hacks/Makefile' from this file.
 
 @SET_MAKE@
@@ -7,14 +7,22 @@
 
 srcdir         = @srcdir@
 VPATH          = @srcdir@
+top_srcdir     = @top_srcdir@
+top_builddir   = ..
 
 install_prefix =
 prefix         = @prefix@
 exec_prefix    = @exec_prefix@
 bindir         = @bindir@
+datadir                = @datadir@
 mandir         = @mandir@
-man1dir                = $(mandir)/man1
+libexecdir     = @libexecdir@
+# maybe this should be 6 (games)?
 mansuffix      = 1
+manNdir                = $(mandir)/man$(mansuffix)
+
+HACKDIR                = @HACKDIR@
+HACK_CONF_DIR  = @HACK_CONF_DIR@
 
 CC             = @CC@
 CFLAGS         = @CFLAGS@
@@ -35,9 +43,6 @@ INSTALL_SCRIPT  = @INSTALL_SCRIPT@
 INSTALL_SETUID  = @INSTALL_SETUID@
 INSTALL_DATA   = @INSTALL_DATA@
 INSTALL_DIRS   = @INSTALL_DIRS@
-GNOME_DATADIR  = @GNOME_DATADIR@
-HACKDIR                = @HACKDIR@
-HACK_CONF_DIR  = @HACK_CONF_DIR@
 
 X_CFLAGS       = @X_CFLAGS@
 X_LIBS         = @X_LIBS@
@@ -53,6 +58,7 @@ HACK_LIBS     = $(HACK_PRE)            @HACK_LIBS@ $(HACK_POST)
 XPM_LIBS       = $(HACK_PRE) @XPM_LIBS@ @HACK_LIBS@ $(HACK_POST)
 JPEG_LIBS      = @JPEG_LIBS@
 XLOCK_LIBS     = $(HACK_LIBS)
+PTY_LIBS       = @PTY_LIBS@
 
 UTILS_SRC      = $(srcdir)/../utils
 UTILS_BIN      = ../utils
@@ -72,7 +78,8 @@ UTIL_OBJS     = $(UTILS_BIN)/alpha.o $(UTILS_BIN)/colors.o \
                  $(UTILS_BIN)/spline.o $(UTILS_BIN)/usleep.o \
                  $(UTILS_BIN)/visual.o $(UTILS_BIN)/logo.o \
                  $(UTILS_BIN)/yarandom.o $(UTILS_BIN)/erase.o \
-                 $(UTILS_SRC)/xshm.o $(UTILS_SRC)/xdbe.o
+                 $(UTILS_BIN)/xshm.o $(UTILS_BIN)/xdbe.o \
+                 $(UTILS_BIN)/colorbars.o
 
 SRCS           = attraction.c blitspin.c bouboule.c braid.c bubbles.c \
                  bubbles-default.c decayscreen.c deco.c drift.c flag.c \
@@ -94,8 +101,15 @@ SRCS                = attraction.c blitspin.c bouboule.c braid.c bubbles.c \
                  nerverot.c xrayswarm.c hyperball.c zoom.c whirlwindwarp.c \
                  rotzoomer.c whirlygig.c speedmine.c vermiculate.c \
                  xpm-pixmap.c webcollage-helper.c twang.c apollonian.c \
-                 euler2d.c juggle.c polyominoes.c thornbird.c fluidballs.c
-SCRIPTS                = vidwhacker webcollage
+                 euler2d.c juggle.c polyominoes.c thornbird.c fluidballs.c \
+                 anemone.c halftone.c metaballs.c eruption.c popsquares.c \
+                 barcode.c piecewise.c cloudlife.c fontglide.c apple2.c \
+                 apple2-main.c analogtv.c xanalogtv.c pong.c wormhole.c \
+                 mismunch.c pacman.c pacman_ai.c pacman_level.c \
+                 fuzzyflakes.c anemotaxis.c memscroller.c substrate.c \
+                 intermomentary.c fireworkx.c fireworkx_mmx.S fiberlamp.c \
+                 boxfit.c interaggregate.c celtic.c
+SCRIPTS                = vidwhacker webcollage ljlatest
 
 OBJS           = attraction.o blitspin.o bouboule.o braid.o bubbles.o \
                  bubbles-default.o decayscreen.o deco.o drift.o flag.o \
@@ -117,7 +131,14 @@ OBJS               = attraction.o blitspin.o bouboule.o braid.o bubbles.o \
                  nerverot.o xrayswarm.o hyperball.o zoom.o whirlwindwarp.o \
                  rotzoomer.o whirlygig.o speedmine.o vermiculate.o \
                  xpm-pixmap.o webcollage-helper.o twang.o apollonian.o \
-                 euler2d.o juggle.o polyominoes.o thornbird.o fluidballs.o
+                 euler2d.o juggle.o polyominoes.o thornbird.o fluidballs.o \
+                 anemone.o halftone.o metaballs.o eruption.o popsquares.o \
+                 barcode.o piecewise.o cloudlife.o fontglide.o apple2.o \
+                 apple2-main.o analogtv.o xanalogtv.o pong.o wormhole.o \
+                 mismunch.o pacman.o pacman_ai.o pacman_level.o \
+                 fuzzyflakes.o anemotaxis.o memscroller.o substrate.o \
+                 intermomentary.o fireworkx.o fiberlamp.o boxfit.o \
+                 interaggregate.o celtic.o
 
 NEXES          = attraction blitspin bouboule braid bubbles decayscreen deco \
                  drift flag flame forest vines galaxy grav greynetic halo \
@@ -126,14 +147,19 @@ NEXES             = attraction blitspin bouboule braid bubbles decayscreen deco \
                  penrose pyro qix rocks rorschach sierpinski slidescreen \
                  slip sphere spiral strange swirl goop starfish munch \
                  fadeplot rd-bomb coral mountain triangle lissie worm rotor \
-                 ant xjack xlyap jigsaw cynosure moire2 flow epicycle \
+                 xjack xlyap jigsaw cynosure moire2 flow epicycle \
                  interference truchet bsod crystal discrete distort kumppa \
                  demon loop t3d penetrate deluxe compass squiral xflame \
                  wander spotlight critical phosphor xmatrix petri shadebobs \
                  xsublim ccurve blaster bumps ripples xteevee xspirograph \
                  nerverot xrayswarm hyperball zoom whirlwindwarp rotzoomer \
                  whirlygig speedmine vermiculate twang apollonian euler2d \
-                 juggle polyominoes thornbird  fluidballs \
+                 juggle polyominoes thornbird  fluidballs anemone halftone \
+                 metaballs eruption popsquares barcode piecewise cloudlife \
+                 fontglide apple2 xanalogtv pong  wormhole mismunch \
+                 pacman fuzzyflakes anemotaxis memscroller substrate \
+                 intermomentary fireworkx fiberlamp boxfit interaggregate \
+                 celtic \
                  @JPEG_EXES@
 SEXES          = sonar
 JPEG_EXES      = webcollage-helper
@@ -149,26 +175,42 @@ XSHM_OBJS = $(UTILS_BIN)/xshm.o
 XDBE_OBJS      = $(UTILS_BIN)/xdbe.o
 
 HDRS           = bubbles.h screenhack.h xlockmore.h xlockmoreI.h automata.h \
-                 bumps.h xpm-pixmap.h
-MEN            = attraction.man blitspin.man bouboule.man braid.man \
-                 bubbles.man decayscreen.man deco.man drift.man flag.man \
-                 flame.man forest.man vines.man galaxy.man grav.man \
-                 greynetic.man halo.man helix.man hopalong.man hypercube.man \
-                 ifs.man imsmap.man julia.man kaleidescope.man laser.man \
-                 lightning.man lisa.man lmorph.man maze.man moire.man \
-                 noseguy.man pedal.man penrose.man pyro.man qix.man \
-                 rocks.man rorschach.man sierpinski.man slidescreen.man \
-                 slip.man sphere.man spiral.man strange.man swirl.man \
-                 goop.man starfish.man munch.man rd-bomb.man bumps.man \
-                 xjack.man xlyap.man jigsaw.man epicycle.man bsod.man \
-                 sonar.man t3d.man squiral.man spotlight.man critical.man \
-                 vidwhacker.man webcollage.man xsublim.man distort.man \
-                 phosphor.man xmatrix.man xteevee.man xflame.man petri.man \
-                 nerverot.man zoom.man whirlwindwarp.man hyperball.man \
-                 rotzoomer.man whirlygig.man speedmine.man penetrate.man \
-                 xspirograph.man twang.man
+                 bumps.h xpm-pixmap.h apple2.h analogtv.h \
+                 pacman.h pacman_ai.h pacman_level.h
+MEN            = anemone.man apollonian.man attraction.man \
+                 blaster.man blitspin.man bouboule.man braid.man bsod.man \
+                 bubbles.man bumps.man ccurve.man compass.man coral.man \
+                 critical.man crystal.man cynosure.man decayscreen.man \
+                 deco.man deluxe.man demon.man discrete.man distort.man \
+                 drift.man epicycle.man euler2d.man fadeplot.man flag.man \
+                 flame.man flow.man fluidballs.man forest.man galaxy.man \
+                 goop.man grav.man greynetic.man halo.man helix.man \
+                 hopalong.man hyperball.man hypercube.man ifs.man imsmap.man \
+                 interference.man jigsaw.man juggle.man julia.man \
+                 kaleidescope.man kumppa.man laser.man lightning.man \
+                 lisa.man lissie.man lmorph.man loop.man maze.man moire.man \
+                 moire2.man mountain.man munch.man nerverot.man noseguy.man \
+                 pedal.man penetrate.man penrose.man petri.man phosphor.man \
+                 polyominoes.man pyro.man qix.man rd-bomb.man ripples.man \
+                 rocks.man rorschach.man rotor.man rotzoomer.man \
+                 shadebobs.man sierpinski.man slidescreen.man slip.man \
+                 sonar.man speedmine.man sphere.man spiral.man \
+                 spotlight.man squiral.man starfish.man strange.man \
+                 swirl.man t3d.man thornbird.man triangle.man truchet.man \
+                 twang.man vermiculate.man vidwhacker.man vines.man \
+                 wander.man webcollage.man whirlwindwarp.man whirlygig.man \
+                 worm.man xflame.man xjack.man xlyap.man xmatrix.man \
+                 xrayswarm.man xspirograph.man xsublim.man xteevee.man \
+                 zoom.man halftone.man eruption.man metaballs.man \
+                 barcode.man piecewise.man cloudlife.man ljlatest.man \
+                 fontglide.man apple2.man xanalogtv.man pong.man \
+                 wormhole.man mismunch.man pacman.man fuzzyflakes.man \
+                 anemotaxis.man memscroller.man substrate.man \
+                 intermomentary.man fireworkx.man fiberlamp.man boxfit.man \
+                 interaggregate.man celtic.man
 STAR           = *
-EXTRAS         = README Makefile.in xlock_23.h .gdbinit \
+EXTRAS         = README Makefile.in xlock_23.h xml2man.pl .gdbinit \
+                 euler2d.tex \
                  config/README \
                  config/$(STAR).xml \
                  images/$(STAR).xbm \
@@ -178,7 +220,8 @@ EXTRAS              = README Makefile.in xlock_23.h .gdbinit \
                  images/noseguy/$(STAR).xbm \
                  images/noseguy/$(STAR).xpm \
                  images/jigsaw/$(STAR).xbm  \
-                 images/molecules/$(STAR).pdb
+                 images/molecules/$(STAR).pdb \
+                 images/pacman/$(STAR).xpm
 
 VMSFILES       = compile_axp.com compile_decc.com link_axp.com link_decc.com \
                  vms_axp.opt vms_axp_12.opt vms_decc.opt vms_decc_12.opt
@@ -250,40 +293,55 @@ munge-scripts: $(SCRIPTS)
        perl="${PERL}" ;                                                \
        rm -f $$tmp ;                                                   \
        for program in $(SCRIPTS); do                                   \
-         echo "adjusting location of perl in $$program..." ;           \
          sed "s@^\(#!\)\(/[^ ]*/perl[^ ]*\)\(.*\)\$$@\1$$perl\3@"      \
              < $(srcdir)/$$program > $$tmp ;                           \
-         if cmp -s $(srcdir)/$$program $$tmp ; then                    \
-           true ;                                                      \
-         else                                                          \
+         if ! cmp -s $(srcdir)/$$program $$tmp ; then                  \
+           echo "$$program: setting interpreter to $$perl" >&2 ;       \
            cat $$tmp > ./$$program ;                                   \
          fi ;                                                          \
        done ;                                                          \
        rm -f $$tmp
 
+# When installing man pages, we install "foo.man" as "foo.N" and update
+# the .TH line in the installed file with one like
+#
+#     .TH XScreenSaver N "V.VV (DD-MMM-YYYY)" "X Version 11"
+#
+# where N is the manual section suffix.
+#
 install-man: $(MEN)
        @men="$(MEN)" ;                                                 \
-       if [ ! -d $(install_prefix)$(man1dir) ]; then                   \
-         $(INSTALL_DIRS) $(install_prefix)$(man1dir) ;                 \
+       U=$(UTILS_SRC)/version.h ;                                      \
+       V=`sed -n 's/.*\([0-9]\.[^)]*)\).*/\1/p' < $$U` ;               \
+       T=/tmp/xs$$$$.$(mansuffix) ;                                    \
+       TH=".TH XScreenSaver $(mansuffix) \"$$V\" \"X Version 11\"" ;   \
+       echo "installing man pages: $$TH" ;                             \
+                                                                       \
+       if [ ! -d $(install_prefix)$(manNdir) ]; then                   \
+         $(INSTALL_DIRS) $(install_prefix)$(manNdir) ;                 \
         fi ;                                                           \
+                                                                       \
        for man in $$men; do                                            \
          instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
+         sed "s/^\.TH.*/$$TH/" < $(srcdir)/$$man > $$T ;               \
          echo $(INSTALL_DATA) $(srcdir)/$$man                          \
-          $(install_prefix)$(man1dir)/$$instname ;                     \
-         $(INSTALL_DATA) $(srcdir)/$$man                               \
-           $(install_prefix)$(man1dir)/$$instname ;                    \
-       done
+          $(install_prefix)$(manNdir)/$$instname ;                     \
+         $(INSTALL_DATA) $$T                                           \
+           $(install_prefix)$(manNdir)/$$instname ;                    \
+       done ;                                                          \
+       rm -f $$T
 
 install-xml:
-       @if [ ! -d $(install_prefix)$(HACK_CONF_DIR) ]; then            \
-         $(INSTALL_DIRS) $(install_prefix)$(HACK_CONF_DIR) ;           \
+       @dest=$(install_prefix)$(HACK_CONF_DIR) ;                       \
+        if [ ! -d $$dest ]; then                                       \
+          $(INSTALL_DIRS) $$dest ;                                     \
         fi ;                                                           \
-        files=`cd $(srcdir)/config/ ; echo README $(STAR).xml` ;       \
-        for file in $$files ; do                                       \
-          echo $(INSTALL_DATA) $(srcdir)/config/$$file                 \
-           $(install_prefix)$(HACK_CONF_DIR)/$$file ;                  \
-         $(INSTALL_DATA) $(srcdir)/config/$$file                       \
-           $(install_prefix)$(HACK_CONF_DIR)/$$file ;                  \
+        src=$(srcdir)/config ;                                         \
+        for file in $(EXES) $(SCRIPTS) ; do                            \
+          if [ -f $$src/$$file.xml ]; then                             \
+            echo $(INSTALL_DATA) $$src/$$file.xml $$dest/$$file.xml ;  \
+                 $(INSTALL_DATA) $$src/$$file.xml $$dest/$$file.xml ;  \
+          fi ;                                                         \
        done
 
 uninstall-program:
@@ -296,15 +354,15 @@ uninstall-man:
        @men="$(MEN)" ;                                                 \
        for man in $$men; do                                            \
          instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
-         echo rm -f $(install_prefix)$(man1dir)/$$instname ;           \
-         rm -f $(install_prefix)$(man1dir)/$$instname ;                \
+         echo rm -f $(install_prefix)$(manNdir)/$$instname* ;          \
+         rm -f $(install_prefix)$(manNdir)/$$instname* ;               \
        done
 
 uninstall-xml:
-       @cd $(srcdir)/config/ ;                                         \
-        for file in README $(STAR).xml ; do                            \
-         echo rm -f $(install_prefix)$(HACK_CONF_DIR)/$$file ;         \
-         rm -f $(install_prefix)$(HACK_CONF_DIR)/$$file ;              \
+       @dest=$(install_prefix)$(HACK_CONF_DIR) ;                       \
+        for file in $(EXES) $(SCRIPTS) ; do                            \
+            echo rm -f $$dest/$$file.xml ;                             \
+                 rm -f $$dest/$$file.xml ;                             \
        done
 
 clean:
@@ -350,6 +408,45 @@ tags:
 echo_tarfiles:
        @echo $(TARFILES)
 
+check_men:
+       @badmen="" ;                                                    \
+        for exe in $(EXES) $(SCRIPTS); do                              \
+          if ! [ -f $(srcdir)/$$exe.man                                \
+                 -o "$$exe" = webcollage-helper ]; then                \
+            badmen="$$badmen $$exe" ;                                  \
+          fi ;                                                         \
+        done ;                                                         \
+        if [ -n "$$badmen" ]; then                                     \
+          echo "" ;                                                    \
+          echo "Warning: The following programs have no manuals:" ;    \
+          echo "" ;                                                    \
+          for m in $$badmen ; do                                       \
+            echo "    $$m" ;                                           \
+          done ;                                                       \
+        fi
+
+check_xml:
+       @badxml="" ;                                                    \
+        for exe in $(EXES) $(SCRIPTS); do                              \
+          if ! [ -f $(srcdir)/config/$$exe.xml                         \
+                 -o "$$exe" = webcollage-helper                        \
+                 -o "$$exe" = xsublim                                  \
+                 -o "$$exe" = ljlatest ]; then                         \
+            badxml="$$badxml $$exe" ;                                  \
+          fi ;                                                         \
+        done ;                                                         \
+        if [ -n "$$badxml" ]; then                                     \
+          echo "" ;                                                    \
+          echo "Warning: The following programs have no configurators:" ; \
+          echo "" ;                                                    \
+          for m in $$badxml ; do                                       \
+            echo "    $$m" ;                                           \
+          done ;                                                       \
+          echo "" ;                                                    \
+        fi
+
+
+
 
 # Rules for generating the VMS makefiles on Unix, so that it doesn't have to
 # be done by hand...
@@ -401,6 +498,7 @@ $(srcdir)/../setup.com: Makefile.in
 distdepend:: compile_axp.com compile_decc.com
 distdepend:: link_axp.com link_decc.com
 distdepend:: $(srcdir)/../setup.com
+distdepend:: check_men check_xml
 
 
 # Rules for noticing when the objects from the utils directory are out of
@@ -437,6 +535,10 @@ screenhack-xlock.o: screenhack.c
        $(CC) -o $@ -c $(INCLUDES) $(DEFS) $(CFLAGS) $(X_CFLAGS) \
        -DXLOCKMORE $(srcdir)/screenhack.c
 
+# Make sure these are regenerated when the version number ticks.
+screenhack.o: $(UTILS_SRC)/version.h
+screenhack-xlock.o: $(UTILS_SRC)/version.h
+
 # Some abbreviations to keep the lines short...
 XPM            = xpm-pixmap.o
 ALP            = $(UTILS_BIN)/alpha.o
@@ -449,6 +551,8 @@ COL         = $(COLOR_OBJS)
 SHM            = $(XSHM_OBJS)
 DBE            = $(XDBE_OBJS)
 BARS           = $(UTILS_BIN)/colorbars.o $(LOGO)
+ATV             = analogtv.o $(SHM)
+APPLE2          = apple2.o $(ATV)
 
 CC_HACK                = $(CC) $(LDFLAGS)
 
@@ -568,8 +672,14 @@ interference:  interference.o      $(HACK_OBJS) $(COL) $(SHM) $(DBE)
 truchet:        truchet.o      $(HACK_OBJS) $(COL)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
 
-bsod:          bsod.o          $(HACK_OBJS) $(GRAB) $(XPM)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(XPM) $(XPM_LIBS)
+bsod:          bsod.o          $(HACK_OBJS) $(GRAB) $(APPLE2) $(XPM)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(APPLE2) $(XPM) $(XPM_LIBS)
+
+apple2:                apple2.o apple2-main.o  $(HACK_OBJS) $(ATV) $(GRAB)
+       $(CC_HACK) -o $@ $@.o   apple2-main.o $(HACK_OBJS) $(ATV) $(GRAB) $(XPM_LIBS) $(PTY_LIBS)
+
+xanalogtv:     xanalogtv.o     $(HACK_OBJS) $(ATV) $(GRAB) $(XPM)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(ATV) $(GRAB) $(XPM) $(XPM_LIBS) $(HACK_LIBS)
 
 distort:       distort.o       $(HACK_OBJS) $(GRAB) $(SHM)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS)
@@ -608,7 +718,7 @@ critical:   critical.o      $(HACK_OBJS) $(COL) $(ERASE)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS)
 
 phosphor:      phosphor.o      $(HACK_OBJS) $(COL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS) $(PTY_LIBS)
 
 xmatrix:       xmatrix.o       $(HACK_OBJS) $(XPM)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(XPM) $(XPM_LIBS)
@@ -625,8 +735,8 @@ ccurve:             ccurve.o        $(HACK_OBJS) $(COL) $(SPL)
 blaster:       blaster.o       $(HACK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
 
-bumps:         bumps.o         $(HACK_OBJS) $(GRAB)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(HACK_LIBS)
+bumps:         bumps.o         $(HACK_OBJS) $(GRAB) $(SHM)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS)
 
 ripples:       ripples.o       $(HACK_OBJS) $(SHM) $(COL) $(GRAB)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(SHM) $(COL) $(GRAB) $(HACK_LIBS)
@@ -655,8 +765,8 @@ whirlwindwarp:      whirlwindwarp.o $(HACK_OBJS) $(COL)
 rotzoomer:     rotzoomer.o     $(HACK_OBJS) $(GRAB) $(SHM)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS)
 
-whirlygig:     whirlygig.o     $(HACK_OBJS) $(COL)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
+whirlygig:     whirlygig.o     $(HACK_OBJS) $(DBE) $(COL)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(DBE) $(COL) $(HACK_LIBS)
 
 speedmine:     speedmine.o     $(HACK_OBJS) $(COL)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
@@ -667,9 +777,75 @@ vermiculate:       vermiculate.o   $(HACK_OBJS) $(COL)
 twang:         twang.o         $(HACK_OBJS) $(GRAB) $(SHM)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS)
 
-fluidballs:    fluidballs.o    $(HACK_OBJS)
+fluidballs:    fluidballs.o    $(HACK_OBJS) $(DBE)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(DBE) $(HACK_LIBS)
+
+anemone:       anemone.o       $(HACK_OBJS) $(DBE)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(DBE) $(HACK_LIBS)
+
+halftone:      halftone.o      $(HACK_OBJS) $(COL)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
+
+metaballs:     metaballs.o     $(HACK_OBJS)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
+
+eruption:      eruption.o      $(HACK_OBJS)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
+
+popsquares:    popsquares.o    $(HACK_OBJS) $(DBE) $(COL)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(DBE) $(COL) $(HACK_LIBS)
+
+barcode:       barcode.o       $(HACK_OBJS) $(HSV)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HSV) $(HACK_LIBS)
+
+piecewise:     piecewise.o     $(HACK_OBJS) $(COL) $(DBE)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(DBE) $(HACK_LIBS)
+
+cloudlife:     cloudlife.o     $(HACK_OBJS) $(COL) $(DBE)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(DBE) $(HACK_LIBS)
+
+fontglide:     fontglide.o     $(HACK_OBJS) $(DBE)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(DBE) $(HACK_LIBS)
+
+pong:  pong.o  $(HACK_OBJS) $(ATV) $(GRAB) $(XPM)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(ATV) $(GRAB) $(XPM) $(XPM_LIBS) $(HACK_LIBS)
+
+wormhole:      wormhole.o      $(HACK_OBJS)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
+
+mismunch:      mismunch.o      $(HACK_OBJS) $(COL) $(SPL)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SPL) $(HACK_LIBS)
+
+fuzzyflakes:   fuzzyflakes.o   $(HACK_OBJS)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
+
+anemotaxis:    anemotaxis.o    $(HACK_OBJS) $(DBE)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(DBE) $(HACK_LIBS)
+
+memscroller:   memscroller.o   $(HACK_OBJS) $(SHM) $(COL)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(SHM) $(COL) $(HACK_LIBS)
+
+substrate:     substrate.o     $(HACK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
 
+intermomentary:        intermomentary.o $(HACK_OBJS) $(COL)
+       $(CC_HACK) -o $@ $@.o    $(HACK_OBJS) $(COL) $(HACK_LIBS)
+
+interaggregate:        interaggregate.o $(HACK_OBJS) $(COL)
+       $(CC_HACK) -o $@ $@.o    $(HACK_OBJS) $(COL) $(HACK_LIBS)
+
+fireworkx:     fireworkx.o     $(HACK_OBJS) $(COL)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
+
+boxfit:                boxfit.o        $(HACK_OBJS) $(COL) $(GRAB)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(GRAB) $(HACK_LIBS)
+
+ifs:           ifs.o           $(HACK_OBJS) $(COL)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
+
+celtic:                celtic.o        $(HACK_OBJS) $(COL) $(ERASE)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS)
+
 
 # The rules for those hacks which follow the `xlockmore' API.
 #
@@ -701,9 +877,6 @@ grav:               grav.o          $(XLOCK_OBJS)
 hopalong:      hopalong.o      $(XLOCK_OBJS) $(ERASE)
        $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(ERASE) $(HACK_LIBS)
 
-ifs:           ifs.o           $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
-
 julia:         julia.o         $(XLOCK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
 
@@ -788,6 +961,12 @@ polyominoes:       polyominoes.o   $(XLOCK_OBJS) $(ERASE)
 thornbird:     thornbird.o     $(XLOCK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
 
+PACOBJS=pacman_ai.o pacman_level.o
+pacman:                pacman.o        $(PACOBJS) $(XLOCK_OBJS) $(XPM)
+       $(CC_HACK) -o $@ $@.o   $(PACOBJS) $(XLOCK_OBJS) $(XPM) $(XPM_LIBS)
+
+fiberlamp:     fiberlamp.o     $(XLOCK_OBJS)
+       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
 
 # These are not like the others.
 #
@@ -802,6 +981,12 @@ webcollage-helper: webcollage-helper.o
 #
 # DO NOT DELETE: updated by make distdepend
 
+analogtv.o: $(srcdir)/analogtv.h
+analogtv.o: ../config.h
+anemone.o: ../config.h
+anemone.o: $(srcdir)/screenhack.h
+anemotaxis.o: ../config.h
+anemotaxis.o: $(srcdir)/screenhack.h
 ant.o: $(srcdir)/automata.h
 ant.o: ../config.h
 ant.o: $(srcdir)/screenhack.h
@@ -811,8 +996,18 @@ apollonian.o: ../config.h
 apollonian.o: $(srcdir)/screenhack.h
 apollonian.o: $(srcdir)/xlockmoreI.h
 apollonian.o: $(srcdir)/xlockmore.h
+apple2-main.o: $(srcdir)/analogtv.h
+apple2-main.o: $(srcdir)/apple2.h
+apple2-main.o: ../config.h
+apple2-main.o: $(srcdir)/screenhack.h
+apple2.o: $(srcdir)/analogtv.h
+apple2.o: $(srcdir)/apple2.h
+apple2.o: ../config.h
+apple2.o: $(srcdir)/screenhack.h
 attraction.o: ../config.h
 attraction.o: $(srcdir)/screenhack.h
+barcode.o: ../config.h
+barcode.o: $(srcdir)/screenhack.h
 blaster.o: ../config.h
 blaster.o: $(srcdir)/screenhack.h
 blitspin.o: ../config.h
@@ -823,13 +1018,19 @@ bouboule.o: ../config.h
 bouboule.o: $(srcdir)/screenhack.h
 bouboule.o: $(srcdir)/xlockmoreI.h
 bouboule.o: $(srcdir)/xlockmore.h
+boxfit.o: ../config.h
+boxfit.o: $(srcdir)/screenhack.h
+boxfit.o: $(srcdir)/xpm-pixmap.h
 braid.o: ../config.h
 braid.o: $(srcdir)/screenhack.h
 braid.o: $(srcdir)/xlockmoreI.h
 braid.o: $(srcdir)/xlockmore.h
+bsod.o: $(srcdir)/analogtv.h
+bsod.o: $(srcdir)/apple2.h
 bsod.o: ../config.h
 bsod.o: $(srcdir)/images/amiga.xpm
 bsod.o: $(srcdir)/images/atari.xbm
+bsod.o: $(srcdir)/images/hmac.xpm
 bsod.o: $(srcdir)/images/macbomb.xbm
 bsod.o: $(srcdir)/images/mac.xbm
 bsod.o: $(srcdir)/screenhack.h
@@ -889,6 +1090,10 @@ bumps.o: ../config.h
 bumps.o: $(srcdir)/screenhack.h
 ccurve.o: ../config.h
 ccurve.o: $(srcdir)/screenhack.h
+celtic.o: ../config.h
+celtic.o: $(srcdir)/screenhack.h
+cloudlife.o: ../config.h
+cloudlife.o: $(srcdir)/screenhack.h
 compass.o: ../config.h
 compass.o: $(srcdir)/screenhack.h
 coral.o: ../config.h
@@ -924,6 +1129,8 @@ drift.o: $(srcdir)/xlockmoreI.h
 drift.o: $(srcdir)/xlockmore.h
 epicycle.o: ../config.h
 epicycle.o: $(srcdir)/screenhack.h
+eruption.o: ../config.h
+eruption.o: $(srcdir)/screenhack.h
 euler2d.o: ../config.h
 euler2d.o: $(srcdir)/screenhack.h
 euler2d.o: $(srcdir)/xlockmoreI.h
@@ -932,6 +1139,12 @@ fadeplot.o: ../config.h
 fadeplot.o: $(srcdir)/screenhack.h
 fadeplot.o: $(srcdir)/xlockmoreI.h
 fadeplot.o: $(srcdir)/xlockmore.h
+fiberlamp.o: ../config.h
+fiberlamp.o: $(srcdir)/screenhack.h
+fiberlamp.o: $(srcdir)/xlockmoreI.h
+fiberlamp.o: $(srcdir)/xlockmore.h
+fireworkx.o: ../config.h
+fireworkx.o: $(srcdir)/screenhack.h
 flag.o: ../config.h
 flag.o: $(srcdir)/images/bob.xbm
 flag.o: $(srcdir)/screenhack.h
@@ -946,10 +1159,14 @@ flow.o: $(srcdir)/xlockmoreI.h
 flow.o: $(srcdir)/xlockmore.h
 fluidballs.o: ../config.h
 fluidballs.o: $(srcdir)/screenhack.h
+fontglide.o: ../config.h
+fontglide.o: $(srcdir)/screenhack.h
 forest.o: ../config.h
 forest.o: $(srcdir)/screenhack.h
 forest.o: $(srcdir)/xlockmoreI.h
 forest.o: $(srcdir)/xlockmore.h
+fuzzyflakes.o: ../config.h
+fuzzyflakes.o: $(srcdir)/screenhack.h
 galaxy.o: ../config.h
 galaxy.o: $(srcdir)/screenhack.h
 galaxy.o: $(srcdir)/xlockmoreI.h
@@ -962,6 +1179,8 @@ grav.o: $(srcdir)/xlockmoreI.h
 grav.o: $(srcdir)/xlockmore.h
 greynetic.o: ../config.h
 greynetic.o: $(srcdir)/screenhack.h
+halftone.o: ../config.h
+halftone.o: $(srcdir)/screenhack.h
 halo.o: ../config.h
 halo.o: $(srcdir)/screenhack.h
 helix.o: ../config.h
@@ -976,12 +1195,14 @@ hypercube.o: ../config.h
 hypercube.o: $(srcdir)/screenhack.h
 ifs.o: ../config.h
 ifs.o: $(srcdir)/screenhack.h
-ifs.o: $(srcdir)/xlockmoreI.h
-ifs.o: $(srcdir)/xlockmore.h
 imsmap.o: ../config.h
 imsmap.o: $(srcdir)/screenhack.h
+interaggregate.o: ../config.h
+interaggregate.o: $(srcdir)/screenhack.h
 interference.o: ../config.h
 interference.o: $(srcdir)/screenhack.h
+intermomentary.o: ../config.h
+intermomentary.o: $(srcdir)/screenhack.h
 jigsaw.o: ../config.h
 jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_e_f.xbm
 jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_e_h.xbm
@@ -1057,6 +1278,12 @@ loop.o: $(srcdir)/xlockmoreI.h
 loop.o: $(srcdir)/xlockmore.h
 maze.o: ../config.h
 maze.o: $(srcdir)/screenhack.h
+memscroller.o: ../config.h
+memscroller.o: $(srcdir)/screenhack.h
+metaballs.o: ../config.h
+metaballs.o: $(srcdir)/screenhack.h
+mismunch.o: ../config.h
+mismunch.o: $(srcdir)/screenhack.h
 moire2.o: ../config.h
 moire2.o: $(srcdir)/screenhack.h
 moire.o: ../config.h
@@ -1080,6 +1307,61 @@ noseguy.o: $(srcdir)/images/noseguy/nose-r1.xpm
 noseguy.o: $(srcdir)/images/noseguy/nose-r2.xpm
 noseguy.o: $(srcdir)/screenhack.h
 noseguy.o: $(srcdir)/xpm-pixmap.h
+pacman_ai.o: ../config.h
+pacman_ai.o: $(srcdir)/pacman_ai.h
+pacman_ai.o: $(srcdir)/pacman.h
+pacman_ai.o: $(srcdir)/pacman_level.h
+pacman_ai.o: $(srcdir)/screenhack.h
+pacman_ai.o: $(srcdir)/xlockmoreI.h
+pacman_ai.o: $(srcdir)/xpm-pixmap.h
+pacman_level.o: ../config.h
+pacman_level.o: $(srcdir)/pacman.h
+pacman_level.o: $(srcdir)/pacman_level.h
+pacman_level.o: $(srcdir)/screenhack.h
+pacman_level.o: $(srcdir)/xlockmoreI.h
+pacman_level.o: $(srcdir)/xpm-pixmap.h
+pacman.o: ../config.h
+pacman.o: $(srcdir)/images/pacman/eyes-d.xpm
+pacman.o: $(srcdir)/images/pacman/eyes-l.xpm
+pacman.o: $(srcdir)/images/pacman/eyes-r.xpm
+pacman.o: $(srcdir)/images/pacman/eyes-u.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-d1.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-d2.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-l1.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-l2.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-mask.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-r1.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-r2.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-s1.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-s2.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-sf1.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-sf2.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-u1.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-u2.xpm
+pacman.o: $(srcdir)/images/pacman/pacman-0.xpm
+pacman.o: $(srcdir)/images/pacman/pacman-d1.xpm
+pacman.o: $(srcdir)/images/pacman/pacman-d2.xpm
+pacman.o: $(srcdir)/images/pacman/pacman-ds1.xpm
+pacman.o: $(srcdir)/images/pacman/pacman-ds2.xpm
+pacman.o: $(srcdir)/images/pacman/pacman-ds3.xpm
+pacman.o: $(srcdir)/images/pacman/pacman-ds4.xpm
+pacman.o: $(srcdir)/images/pacman/pacman-ds5.xpm
+pacman.o: $(srcdir)/images/pacman/pacman-ds6.xpm
+pacman.o: $(srcdir)/images/pacman/pacman-ds7.xpm
+pacman.o: $(srcdir)/images/pacman/pacman-ds8.xpm
+pacman.o: $(srcdir)/images/pacman/pacman-l1.xpm
+pacman.o: $(srcdir)/images/pacman/pacman-l2.xpm
+pacman.o: $(srcdir)/images/pacman/pacman-r1.xpm
+pacman.o: $(srcdir)/images/pacman/pacman-r2.xpm
+pacman.o: $(srcdir)/images/pacman/pacman-u1.xpm
+pacman.o: $(srcdir)/images/pacman/pacman-u2.xpm
+pacman.o: $(srcdir)/pacman_ai.h
+pacman.o: $(srcdir)/pacman.h
+pacman.o: $(srcdir)/pacman_level.h
+pacman.o: $(srcdir)/screenhack.h
+pacman.o: $(srcdir)/xlockmoreI.h
+pacman.o: $(srcdir)/xlockmore.h
+pacman.o: $(srcdir)/xpm-pixmap.h
 pedal.o: ../config.h
 pedal.o: $(srcdir)/screenhack.h
 penetrate.o: ../config.h
@@ -1092,10 +1374,17 @@ petri.o: ../config.h
 petri.o: $(srcdir)/screenhack.h
 phosphor.o: ../config.h
 phosphor.o: $(srcdir)/screenhack.h
+piecewise.o: ../config.h
+piecewise.o: $(srcdir)/screenhack.h
 polyominoes.o: ../config.h
 polyominoes.o: $(srcdir)/screenhack.h
 polyominoes.o: $(srcdir)/xlockmoreI.h
 polyominoes.o: $(srcdir)/xlockmore.h
+pong.o: $(srcdir)/analogtv.h
+pong.o: ../config.h
+pong.o: $(srcdir)/screenhack.h
+popsquares.o: ../config.h
+popsquares.o: $(srcdir)/screenhack.h
 pyro.o: ../config.h
 pyro.o: $(srcdir)/screenhack.h
 qix.o: ../config.h
@@ -1150,6 +1439,8 @@ strange.o: ../config.h
 strange.o: $(srcdir)/screenhack.h
 strange.o: $(srcdir)/xlockmoreI.h
 strange.o: $(srcdir)/xlockmore.h
+substrate.o: ../config.h
+substrate.o: $(srcdir)/screenhack.h
 swirl.o: ../config.h
 swirl.o: $(srcdir)/screenhack.h
 swirl.o: $(srcdir)/xlockmoreI.h
@@ -1181,10 +1472,16 @@ whirlwindwarp.o: ../config.h
 whirlwindwarp.o: $(srcdir)/screenhack.h
 whirlygig.o: ../config.h
 whirlygig.o: $(srcdir)/screenhack.h
+wormhole.o: ../config.h
+wormhole.o: $(srcdir)/screenhack.h
 worm.o: ../config.h
 worm.o: $(srcdir)/screenhack.h
 worm.o: $(srcdir)/xlockmoreI.h
 worm.o: $(srcdir)/xlockmore.h
+xanalogtv.o: $(srcdir)/analogtv.h
+xanalogtv.o: ../config.h
+xanalogtv.o: $(srcdir)/screenhack.h
+xanalogtv.o: $(srcdir)/xpm-pixmap.h
 xflame.o: ../config.h
 xflame.o: $(srcdir)/images/bob.xbm
 xflame.o: $(srcdir)/screenhack.h
@@ -1197,10 +1494,6 @@ xlockmore.o: $(srcdir)/xlockmoreI.h
 xlyap.o: ../config.h
 xlyap.o: $(srcdir)/screenhack.h
 xmatrix.o: ../config.h
-xmatrix.o: $(srcdir)/images/matrix0b.xbm
-xmatrix.o: $(srcdir)/images/matrix0b.xpm
-xmatrix.o: $(srcdir)/images/matrix0.xbm
-xmatrix.o: $(srcdir)/images/matrix0.xpm
 xmatrix.o: $(srcdir)/images/matrix1b.xbm
 xmatrix.o: $(srcdir)/images/matrix1b.xpm
 xmatrix.o: $(srcdir)/images/matrix1.xbm