+lament: lament.o $(HACK_OBJS) xpm-ximage.o
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) xpm-ximage.o $(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)
+
+glplanet: glplanet.o sphere.o xpm-ximage.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o sphere.o xpm-ximage.o $(HACK_OBJS) $(XPM_LIBS)
+
+pulsar: pulsar.o $(HACK_OBJS) xpm-ximage.o
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) xpm-ximage.o $(HACK_LIBS) $(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
+extrusion: $(EXTRUSION_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $(EXTRUSION_OBJS) $(HACK_OBJS) $(XPM_LIBS) $(GLE_LIBS)
+
+sierpinski3d: sierpinski3d.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+gflux: gflux.o $(HACK_OBJS) $(GRAB_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_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
+gltext: $(GLT_OBJS) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $(GLT_OBJS) $(HACK_OBJS) $(HACK_LIBS)
+
+dangerball: dangerball.o sphere.o tube.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o sphere.o tube.o $(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)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+engine: engine.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+flipscreen3d: flipscreen3d.o $(HACK_OBJS) $(GRAB_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB_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)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+spheremonics: spheremonics.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
+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
+
+molecule: molecule.o sphere.o tube.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o sphere.o tube.o $(HACK_OBJS) $(HACK_LIBS)
+
+dnalogo: dnalogo.o tube.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o tube.o $(HACK_OBJS) $(HACK_LIBS)