+PHOTOPILE_OBJS=dropshadow.o $(HACK_GRAB_OBJS)
+photopile: photopile.o $(PHOTOPILE_OBJS)
+ $(CC_HACK) -o $@ $@.o $(PHOTOPILE_OBJS) $(HACK_LIBS)
+
+rubikblocks: rubikblocks.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+HILB_OBJS=sphere.o tube.o $(HACK_TRACK_OBJS)
+hilbert: hilbert.o $(HILB_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HILB_OBJS) $(HACK_LIBS)
+
+CCUBE_OBJS=companion.o companion_quad.o companion_disc.o companion_heart.o \
+ gllist.o $(HACK_TRACK_OBJS)
+companioncube: $(CCUBE_OBJS)
+ $(CC_HACK) -o $@ $(CCUBE_OBJS) $(HACK_LIBS)
+
+TBIT_OBJS=tronbit.o tronbit_idle1.o tronbit_idle2.o tronbit_no.o tronbit_yes.o\
+ gllist.o $(HACK_TRACK_OBJS)
+tronbit: $(TBIT_OBJS)
+ $(CC_HACK) -o $@ $(TBIT_OBJS) $(HACK_LIBS)
+
+KALEIDOCYCLE_OBJS=kaleidocycle.o normals.o $(HACK_TRACK_OBJS)
+kaleidocycle: $(KALEIDOCYCLE_OBJS)
+ $(CC_HACK) -o $@ $(KALEIDOCYCLE_OBJS) $(HACK_LIBS)
+
+quasicrystal: quasicrystal.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+unknownpleasures: unknownpleasures.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+geodesic: geodesic.o normals.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o normals.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+geodesicgears: geodesicgears.o $(GEARS_OBJS)
+ $(CC_HACK) -o $@ $@.o $(GEARS_OBJS) $(HACK_LIBS)
+
+cityflow: cityflow.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+splitflap_dxf::
+ ./dxf2gl.pl --normalize --smooth --layers splitflap.dxf splitflap_obj.c
+
+FLAP_OBJS=splitflap_obj.o gllist.o splitflap.o $(TEXT) $(HACK_TRACK_OBJS)
+splitflap: $(FLAP_OBJS)
+ $(CC_HACK) -o $@ $(FLAP_OBJS) $(PNG_LIBS) $(TEXT_LIBS)
+
+unicrud: unicrud.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+ES_OBJS=$(PNG) $(HACK_TRACK_OBJS)
+energystream: energystream.o $(ES_OBJS)
+ $(CC_HACK) -o $@ $@.o $(ES_OBJS) $(PNG_LIBS) $(HACK_LIBS)
+
+raverhoop: raverhoop.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+HSTAT_OBJS=sphere.o normals.o $(HACK_TRACK_OBJS)
+hydrostat: hydrostat.o $(HSTAT_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HSTAT_OBJS) $(HACK_LIBS)
+
+discoball: discoball.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+cubetwist: cubetwist.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+cubestack: cubestack.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+splodesic: splodesic.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+hexstrut: hexstrut.o normals.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o normals.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+esper: esper.o $(HACK_GRAB_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_GRAB_OBJS) $(HACK_LIBS)
+
+ships_dxf::
+ ./dxf2gl.pl --normalize --layers ships.dxf ships.c
+
+DAZ_OBJS=ships.o gllist.o $(HACK_TRACK_OBJS)
+razzledazzle: razzledazzle.o $(DAZ_OBJS)
+ $(CC_HACK) -o $@ $@.o $(DAZ_OBJS) $(HACK_LIBS)
+
+peepers: peepers.o normals.o $(PNG) $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o normals.o $(PNG) $(PNG_LIBS) $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+crumbler: crumbler.o quickhull.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o quickhull.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+maze3d: maze3d.o $(PNG) $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(PNG) $(PNG_LIBS) $(HACK_TRACK_OBJS) $(HACK_LIBS)