+lament: lament.o $(TRACK_OBJS) xpm-ximage.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(TRACK_OBJS) xpm-ximage.o $(HACK_OBJS) $(XPM_LIBS)
+
+B3D = b_sphere.o b_draw.o b_lockglue.o
+bubble3d: bubble3d.o $(HACK_OBJS) $(B3D)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(B3D) $(HACK_LIBS)
+
+PLANETHACKS=sphere.o xpm-ximage.o $(TRACK_OBJS)
+glplanet: glplanet.o $(PLANETHACKS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(PLANETHACKS) $(HACK_OBJS) $(XPM_LIBS)
+
+pulsar: pulsar.o $(HACK_OBJS) xpm-ximage.o
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) xpm-ximage.o $(XPM_LIBS)
+
+EXTRUSION_OBJS=extrusion.o extrusion-helix2.o extrusion-helix3.o \
+ extrusion-helix4.o extrusion-joinoffset.o extrusion-screw.o \
+ extrusion-taper.o extrusion-twistoid.o xpm-ximage.o $(TRACK_OBJS)
+extrusion: $(EXTRUSION_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $(EXTRUSION_OBJS) $(HACK_OBJS) $(XPM_LIBS) $(GLE_LIBS)
+
+sierpinski3d: sierpinski3d.o $(HACK_OBJS) $(TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(TRACK_OBJS) $(HACK_LIBS)
+
+gflux: gflux.o $(HACK_OBJS) $(TRACK_OBJS) $(GRAB_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(TRACK_OBJS) $(GRAB_OBJS) $(HACK_LIBS)
+
+SW_OBJS=starwars.o glut_stroke.o glut_swidth.o
+starwars: $(SW_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $(SW_OBJS) $(HACK_OBJS) $(HACK_LIBS)
+
+GLT_OBJS=gltext.o glut_stroke.o glut_swidth.o tube.o $(TRACK_OBJS)
+gltext: $(GLT_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $(GLT_OBJS) $(HACK_OBJS) $(HACK_LIBS)
+
+DB_OBJS=sphere.o tube.o $(TRACK_OBJS)
+dangerball: dangerball.o $(DB_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(DB_OBJS) $(HACK_OBJS) $(HACK_LIBS)
+
+circuit: circuit.o $(HACK_OBJS) font-ximage.o
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) font-ximage.o $(HACK_LIBS)
+
+menger: menger.o $(HACK_OBJS) $(TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(TRACK_OBJS) $(HACK_LIBS)
+
+engine: engine.o $(HACK_OBJS) $(TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(TRACK_OBJS) $(HACK_LIBS)
+
+flipscreen3d: flipscreen3d.o $(HACK_OBJS) $(GRAB_OBJS) $(TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB_OBJS) $(TRACK_OBJS) $(HACK_LIBS)
+
+glsnake: glsnake.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+boxed: boxed.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+glforestfire: glforestfire.o $(HACK_OBJS) xpm-ximage.o
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) xpm-ximage.o $(XPM_LIBS)
+
+sballs: sballs.o $(HACK_OBJS) xpm-ximage.o
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) xpm-ximage.o $(XPM_LIBS)
+
+cubenetic: cubenetic.o $(HACK_OBJS) $(TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(TRACK_OBJS) $(HACK_LIBS)
+
+spheremonics: spheremonics.o $(HACK_OBJS) $(TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(TRACK_OBJS) $(HACK_LIBS)
+
+LLOBJS=marching.o xpm-ximage.o $(TRACK_OBJS) $(HACK_OBJS)
+lavalite: lavalite.o $(LLOBJS)
+ $(CC_HACK) -o $@ $@.o $(LLOBJS) $(XPM_LIBS)
+
+queens: queens.o $(TRACK_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(TRACK_OBJS) $(HACK_OBJS) $(HACK_LIBS)
+
+CHESSOBJS=chessmodels.o $(TRACK_OBJS) $(HACK_OBJS)
+endgame: endgame.o $(CHESSOBJS)
+ $(CC_HACK) -o $@ $@.o $(CHESSOBJS) $(HACK_LIBS)
+
+glblur: glblur.o $(HACK_OBJS) $(TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(TRACK_OBJS) $(HACK_LIBS)
+
+TOASTOBJS1=\
+ toaster.o toaster_base.o toaster_handle.o toaster_handle2.o \
+ toaster_jet.o toaster_knob.o toaster_slots.o toaster_wing.o \
+ toast.o toast2.o
+TOASTOBJS=flyingtoasters.o gllist.o $(TOASTOBJS1) xpm-ximage.o
+flyingtoasters: $(TOASTOBJS) $(TRACK_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $(TOASTOBJS) $(TRACK_OBJS) $(HACK_OBJS) $(XPM_LIBS)
+
+COWOBJS1=\
+ cow_face.o cow_hide.o cow_hoofs.o cow_horns.o cow_tail.o cow_udder.o
+COWOBJS=bouncingcow.o gllist.o $(COWOBJS1) xpm-ximage.o
+bouncingcow: $(COWOBJS) $(TRACK_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $(COWOBJS) $(TRACK_OBJS) $(HACK_OBJS) $(XPM_LIBS)
+
+glslideshow: glslideshow.o $(HACK_OBJS) $(GRAB_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB_OBJS) $(HACK_LIBS)
+
+jigglypuff: jigglypuff.o xpm-ximage.o $(HACK_OBJS) $(TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o xpm-ximage.o $(HACK_OBJS) $(TRACK_OBJS) $(XPM_LIBS)
+
+klein: klein.o $(HACK_OBJS) $(TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(TRACK_OBJS) $(HACK_LIBS)
+
+hypertorus: hypertorus.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+glmatrix: glmatrix.o $(HACK_OBJS) xpm-ximage.o
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) xpm-ximage.o $(XPM_LIBS)
+
+cubestorm: cubestorm.o $(TRACK_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(TRACK_OBJS) $(HACK_OBJS) $(HACK_LIBS)
+
+glknots: glknots.o tube.o $(TRACK_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o tube.o $(TRACK_OBJS) $(HACK_OBJS) $(HACK_LIBS)
+
+blocktube: blocktube.o $(HACK_OBJS) xpm-ximage.o
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) xpm-ximage.o $(XPM_LIBS)
+
+flipflop: flipflop.o $(TRACK_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(TRACK_OBJS) $(HACK_OBJS) $(HACK_LIBS)
+
+antspotlight: antspotlight.o $(TRACK_OBJS) $(GRAB_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(TRACK_OBJS) $(GRAB_OBJS) $(HACK_OBJS) $(HACK_LIBS)
+
+polytopes: polytopes.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+# This one works differently (it's not xlock-like.)
+#
+STONER_OBJS=stonerview.o stonerview-move.o stonerview-osc.o stonerview-view.o \
+ $(UTILS_BIN)/yarandom.o $(UTILS_BIN)/usleep.o
+stonerview: $(STONER_OBJS)
+ $(CC_HACK) -o $@ $(STONER_OBJS) $(HACK_LIBS)
+
+molecules.h:
+ @tmp=molecules.h.$$$$ ; \
+ rm -f $$tmp ; \
+ echo "building molecules.h from $(HACK_SRC)/images/molecules/*.pdb" ; \
+ for f in $(HACK_SRC)/images/molecules/*.pdb ; do \
+ $(SHELL) $(UTILS_SRC)/ad2c "$$f" | \
+ sed 's/",$$/\\n"/' >> $$tmp ; \
+ echo ',' >> $$tmp ; \
+ done ; \
+ mv $$tmp molecules.h
+
+MOLECULEOBJS=sphere.o tube.o $(TRACK_OBJS)
+molecule: molecule.o $(MOLECULEOBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(MOLECULEOBJS) $(HACK_OBJS) $(HACK_LIBS)
+
+gleidescope: gleidescope.o xpm-ximage.o $(HACK_OBJS) $(GRAB_OBJS)
+ $(CC_HACK) -o $@ $@.o xpm-ximage.o $(HACK_OBJS) $(GRAB_OBJS) $(XPM_LIBS)
+
+mirrorblob: mirrorblob.o $(HACK_OBJS) $(GRAB_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB_OBJS) $(XPM_LIBS)
+
+blinkbox: blinkbox.o sphere.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o sphere.o $(HACK_OBJS) $(HACK_LIBS)
+
+noof: noof.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+PH_OBJS=polyhedra-gl.o $(TRACK_OBJS)
+polyhedra: polyhedra.o $(PH_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(PH_OBJS) $(HACK_OBJS) $(HACK_LIBS)
+
+antinspect: antinspect.o $(TRACK_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(TRACK_OBJS) $(HACK_OBJS) $(HACK_LIBS)
+
+providence: providence.o $(TRACK_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(TRACK_OBJS) $(HACK_OBJS) $(HACK_LIBS)
+
+pinion: pinion.o $(TRACK_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(TRACK_OBJS) $(HACK_OBJS) $(HACK_LIBS)
+
+dnalogo: dnalogo.o tube.o $(TRACK_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o tube.o $(TRACK_OBJS) $(HACK_OBJS) $(HACK_LIBS)