http://www.jwz.org/xscreensaver/xscreensaver-5.09.tar.gz
[xscreensaver] / hacks / glx / Makefile.in
1 # hacks/glx/Makefile.in --- xscreensaver, Copyright (c) 1999-2005
2 #  by Jamie Zawinski.
3 # the `../../configure' script generates `hacks/glx/Makefile' from this file.
4
5 @SET_MAKE@
6 .SUFFIXES:
7 .SUFFIXES: .c .o
8
9 srcdir          = @srcdir@
10 VPATH           = @srcdir@
11 top_srcdir      = @top_srcdir@
12 top_builddir    = ..
13
14 install_prefix  =
15 prefix          = @prefix@
16 exec_prefix     = @exec_prefix@
17 bindir          = @bindir@
18 datarootdir     = @datarootdir@
19 datadir         = @datadir@
20 mandir          = @mandir@
21 libexecdir      = @libexecdir@
22 mansuffix       = 6
23 manNdir         = $(mandir)/man$(mansuffix)
24
25 HACKDIR         = @HACKDIR@
26 HACK_CONF_DIR   = @HACK_CONF_DIR@
27
28 CC              = @CC@
29 CFLAGS          = @CFLAGS@
30 LDFLAGS         = @LDFLAGS@
31 DEFS            = -DSTANDALONE -DUSE_GL @DEFS@
32 LIBS            = @LIBS@
33
34 DEPEND          = @DEPEND@
35 DEPEND_FLAGS    = @DEPEND_FLAGS@
36 DEPEND_DEFINES  = @DEPEND_DEFINES@
37
38 SHELL           = /bin/sh
39 INSTALL         = @INSTALL@
40 SUID_FLAGS      = -o root -m 4755
41 INSTALL_PROGRAM = @INSTALL_PROGRAM@
42 INSTALL_SETUID  = @INSTALL_SETUID@
43 INSTALL_DATA    = @INSTALL_DATA@
44 INSTALL_DIRS    = @INSTALL_DIRS@
45
46 X_CFLAGS        = @X_CFLAGS@
47 X_LIBS          = @X_LIBS@
48 X_PRE_LIBS      = @X_PRE_LIBS@
49 X_EXTRA_LIBS    = @X_EXTRA_LIBS@
50 XMU_LIBS        = @XMU_LIBS@
51
52 # Note: see comment in ../../driver/Makefile.in for explanation of X_LIBS, etc.
53 #
54 HACK_PRE        = $(LIBS) $(X_LIBS)
55 HACK_POST     = $(X_PRE_LIBS) -lXt -lX11 $(XMU_LIBS) -lXext $(X_EXTRA_LIBS) -lm
56 HACK_POST2      = @GL_LIBS@ @HACK_LIBS@ $(HACK_POST)
57 HACK_LIBS       = $(HACK_PRE)                       $(HACK_POST2)
58 XPM_LIBS        = $(HACK_PRE)            @XPM_LIBS@ $(HACK_POST2)
59 GLE_LIBS        = $(HACK_PRE) @GLE_LIBS@ @XPM_LIBS@ $(HACK_POST2)
60 MINIXPM         = $(UTILS_BIN)/minixpm.o
61
62 HACK_SRC        = $(srcdir)/..
63 HACK_BIN        = ..
64 UTILS_SRC       = $(HACK_SRC)/../utils
65 UTILS_BIN       = $(HACK_BIN)/../utils
66
67 INCLUDES        = -I. -I$(srcdir) -I$(UTILS_SRC) -I$(HACK_SRC) -I../.. @INCLUDES@
68
69 UTIL_SRCS       = $(UTILS_SRC)/colors.c $(UTILS_SRC)/hsv.c \
70                   $(UTILS_SRC)/resources.c $(UTILS_SRC)/usleep.c \
71                   $(UTILS_SRC)/visual.c $(UTILS_SRC)/visual-gl.c \
72                   $(UTILS_SRC)/yarandom.c $(UTILS_SRC)/xshm.c
73 UTIL_OBJS       = $(UTILS_SRC)/colors.o $(UTILS_SRC)/hsv.o \
74                   $(UTILS_SRC)/resources.o $(UTILS_SRC)/usleep.o \
75                   $(UTILS_SRC)/visual.o $(UTILS_SRC)/visual-gl.o \
76                    $(UTILS_SRC)/yarandom.o $(UTILS_SRC)/xshm.o
77
78 SRCS            = xscreensaver-gl-helper.c normals.c glxfonts.c fps-gl.c \
79                   atlantis.c b_draw.c b_lockglue.c b_sphere.c bubble3d.c \
80                   buildlwo.c cage.c dolphin.c gears.c lament.c moebius.c \
81                   morph3d.c pipeobjs.c pipes.c rubik.c s1_1.c s1_2.c s1_3.c \
82                   s1_4.c s1_5.c s1_6.c s1_b.c shark.c sproingies.c \
83                   sproingiewrap.c stairs.c superquadrics.c swim.c whale.c \
84                   xlock-gl-utils.c xpm-ximage.c glplanet.c pulsar.c \
85                   extrusion.c extrusion-helix2.c extrusion-helix3.c \
86                   extrusion-helix4.c extrusion-joinoffset.c extrusion-screw.c \
87                   extrusion-taper.c extrusion-twistoid.c sierpinski3d.c \
88                   gflux.c stonerview.c stonerview-move.c stonerview-osc.c \
89                   stonerview-view.c starwars.c glut_stroke.c glut_swidth.c \
90                   gltext.c molecule.c dangerball.c sphere.c tube.c circuit.c \
91                   menger.c engine.c flipscreen3d.c font-ximage.c dnalogo.c \
92                   grab-ximage.c glsnake.c boxed.c glforestfire.c sballs.c \
93                   cubenetic.c spheremonics.c marching.c lavalite.c rotator.c \
94                   trackball.c gltrackball.c queens.c endgame.c chessmodels.c \
95                   glblur.c gllist.c flurry.c flurry-smoke.c flurry-spark.c \
96                   flurry-star.c flurry-texture.c atunnel.c tunnel_draw.c \
97                   flyingtoasters.c toaster.c toaster_base.c toaster_handle.c \
98                   toaster_handle2.c toaster_jet.c toaster_knob.c \
99                   toaster_slots.c toaster_wing.c toast.c toast2.c \
100                   bouncingcow.c cow_face.c cow_hide.c cow_hoofs.c cow_horns.c \
101                   cow_tail.c cow_udder.c glslideshow.c jigglypuff.c klein.c \
102                   hypertorus.c glmatrix.c cubestorm.c glknots.c blocktube.c \
103                   flipflop.c antspotlight.c polytopes.c gleidescope.c \
104                   mirrorblob.c blinkbox.c noof.c polyhedra.c polyhedra-gl.c \
105                   antinspect.c providence.c pinion.c involute.c boing.c \
106                   texfont.c carousel.c fliptext.c antmaze.c tangram.c \
107                   tangram_shapes.c crackberg.c glhanoi.c cube21.c \
108                   timetunnel.c juggler3d.c topblock.c glschool.c \
109                   glschool_gl.c glschool_alg.c glcells.c voronoi.c \
110                   moebiusgears.c lockward.c cubicgrid.c hypnowheel.c \
111                   skytentacles.c teapot.c sonar.c sonar-sim.c sonar-icmp.c \
112                   jigsaw.c photopile.c rubikblocks.c surfaces.c
113
114 OBJS            = xscreensaver-gl-helper.o normals.o glxfonts.o fps-gl.o \
115                   atlantis.o b_draw.o b_lockglue.o b_sphere.o bubble3d.o \
116                   buildlwo.o cage.o dolphin.o gears.o lament.o moebius.o \
117                   morph3d.o pipeobjs.o pipes.o rubik.o s1_1.o s1_2.o s1_3.o \
118                   s1_4.o s1_5.o s1_6.o s1_b.o shark.o sproingies.o \
119                   sproingiewrap.o stairs.o superquadrics.o swim.o whale.o \
120                   xlock-gl-utils.o xpm-ximage.o glplanet.o pulsar.o \
121                   extrusion.o extrusion-helix2.o extrusion-helix3.o \
122                   extrusion-helix4.o extrusion-joinoffset.o extrusion-screw.o \
123                   extrusion-taper.o extrusion-twistoid.o sierpinski3d.o \
124                   gflux.o stonerview.o stonerview-move.o stonerview-osc.o \
125                   stonerview-view.o starwars.o glut_stroke.o glut_swidth.o \
126                   gltext.o molecule.o dangerball.o sphere.o tube.o circuit.o \
127                   menger.o engine.o flipscreen3d.o font-ximage.o dnalogo.o \
128                   grab-ximage.o glsnake.o boxed.o glforestfire.o sballs.o \
129                   cubenetic.o spheremonics.o marching.o lavalite.o rotator.o \
130                   trackball.o gltrackball.o queens.o endgame.o chessmodels.o \
131                   glblur.o gllist.o flurry.o flurry-smoke.o flurry-spark.o \
132                   flurry-star.o flurry-texture.o atunnel.o tunnel_draw.o \
133                   flyingtoasters.o toaster.o toaster_base.o toaster_handle.o \
134                   toaster_handle2.o toaster_jet.o toaster_knob.o \
135                   toaster_slots.o toaster_wing.o toast.o toast2.o \
136                   bouncingcow.o cow_face.o cow_hide.o cow_hoofs.o cow_horns.o \
137                   cow_tail.o cow_udder.o glslideshow.o jigglypuff.o klein.o \
138                   hypertorus.o glmatrix.o cubestorm.o glknots.o blocktube.o \
139                   flipflop.o antspotlight.o polytopes.o gleidescope.o \
140                   mirrorblob.o blinkbox.o noof.o polyhedra.o polyhedra-gl.o \
141                   antinspect.o providence.o pinion.o involute.o boing.o \
142                   texfont.o carousel.o fliptext.o antmaze.o tangram.o \
143                   tangram_shapes.o crackberg.o glhanoi.o cube21.o \
144                   timetunnel.o juggler3d.o topblock.o glschool.o \
145                   glschool_gl.o glschool_alg.o glcells.o voronoi.o \
146                   moebiusgears.o lockward.o cubicgrid.o hypnowheel.o \
147                   skytentacles.o teapot.o sonar.o sonar-sim.o sonar-icmp.o \
148                   jigsaw.o photopile.o rubikblocks.o surfaces.o
149
150 GL_EXES         = cage gears moebius pipes sproingies stairs superquadrics \
151                   morph3d rubik atlantis lament bubble3d glplanet pulsar \
152                   sierpinski3d gflux stonerview starwars gltext molecule \
153                   dangerball circuit menger engine flipscreen3d glsnake boxed \
154                   sballs cubenetic spheremonics lavalite queens \
155                   endgame glblur flurry atunnel flyingtoasters bouncingcow \
156                   glslideshow jigglypuff klein hypertorus glmatrix cubestorm \
157                   glknots blocktube flipflop antspotlight polytopes \
158                   gleidescope mirrorblob blinkbox noof polyhedra \
159                   antinspect providence pinion boing carousel fliptext \
160                   antmaze tangram crackberg glhanoi cube21 timetunnel \
161                   juggler3d topblock glschool glcells voronoi moebiusgears \
162                   lockward cubicgrid hypnowheel skytentacles jigsaw photopile \
163                   rubikblocks surfaces
164 GLE_EXES        = extrusion
165 SUID_EXES       = sonar
166 GL_UTIL_EXES    = xscreensaver-gl-helper
167 HACK_EXES_1     = @GL_EXES@ @GLE_EXES@
168 HACK_EXES       = $(HACK_EXES_1) @SUID_EXES@
169 XSHM_OBJS       = $(UTILS_BIN)/xshm.o
170 GRAB_OBJS       = $(UTILS_BIN)/grabclient.o grab-ximage.o $(XSHM_OBJS)
171 EXES            = @GL_UTIL_EXES@ $(HACK_EXES)
172
173 RETIRED_EXES    = @RETIRED_GL_EXES@
174 RETIRED_GL_EXES = glforestfire
175
176 HACK_OBJS       = $(HACK_BIN)/screenhack.o $(HACK_BIN)/fps.o \
177                   xlockmore-gl.o xlock-gl-utils.o glxfonts.o fps-gl.o \
178                   $(UTILS_BIN)/resources.o $(UTILS_BIN)/visual.o \
179                   $(UTILS_BIN)/visual-gl.o $(UTILS_BIN)/usleep.o \
180                   $(UTILS_BIN)/yarandom.o $(UTILS_BIN)/hsv.o \
181                   $(UTILS_BIN)/colors.o
182
183 HDRS            = atlantis.h bubble3d.h buildlwo.h e_textures.h xpm-ximage.h \
184                   grab-ximage.h font-ximage.h tube.h sphere.h boxed.h \
185                   stonerview.h stonerview-move.h stonerview-osc.h \
186                   glutstroke.h glut_roman.h marching.h rotator.h trackball.h \
187                   gltrackball.h chessmodels.h chessgames.h gllist.h flurry.h \
188                   tunnel_draw.h ants.h polyhedra.h normals.h glxfonts.h \
189                   texfont.h tangram_shapes.h sproingies.h extrusion.h \
190                   glschool.h glschool_gl.h glschool_alg.h topblock.h \
191                   involute.h teapot.h sonar.h
192 GL_MEN          = atlantis.man boxed.man bubble3d.man cage.man circuit.man \
193                   cubenetic.man dangerball.man engine.man extrusion.man \
194                   flipscreen3d.man gears.man gflux.man \
195                   glplanet.man glsnake.man gltext.man lament.man lavalite.man \
196                   menger.man moebius.man molecule.man morph3d.man pipes.man \
197                   pulsar.man queens.man rubik.man sballs.man sierpinski3d.man \
198                   spheremonics.man sproingies.man stairs.man starwars.man \
199                   stonerview.man superquadrics.man xscreensaver-gl-helper.man \
200                   endgame.man flurry.man glblur.man atunnel.man \
201                   flyingtoasters.man bouncingcow.man glslideshow.man \
202                   jigglypuff.man klein.man hypertorus.man glmatrix.man \
203                   cubestorm.man glknots.man blocktube.man flipflop.man \
204                   antspotlight.man polytopes.man gleidescope.man \
205                   mirrorblob.man blinkbox.man noof.man polyhedra.man \
206                   antinspect.man providence.man pinion.man boing.man \
207                   carousel.man fliptext.man antmaze.man tangram.man \
208                   crackberg.man glhanoi.man cube21.man timetunnel.man \
209                   juggler3d.man topblock.man glschool.man glcells.man \
210                   voronoi.man moebiusgears.man lockward.man cubicgrid.man \
211                   hypnowheel.man skytentacles.man sonar.man jigsaw.man \
212                   photopile.man rubikblocks.man surfaces.man
213 MEN             = @GL_MEN@
214 RETIRED_MEN     = glforestfire.man
215 EXTRAS          = README Makefile.in dxf2gl.pl molecules.sh starwars.txt
216
217 TARFILES        = $(SRCS) $(HDRS) $(MEN) $(EXTRAS)
218
219
220 default: all
221 all: $(EXES) $(RETIRED_EXES)
222
223 install:   install-program    install-xml   install-man
224 uninstall: uninstall-program  uninstall-xml uninstall-man
225
226 install-strip:
227         $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
228
229 # the hacks, in $HACKDIR
230 install-program:: $(EXES)
231         @exes="$(HACK_EXES_1)" ;                                        \
232          idir="$(install_prefix)$(HACKDIR)" ;                           \
233          if [ "$$exes" != "" ]; then                                    \
234            if [ ! -d $$idir ]; then                                     \
235              $(INSTALL_DIRS) $$idir ;                                   \
236            fi ;                                                         \
237            for program in $$exes; do                                    \
238              echo $(INSTALL_PROGRAM) $$program $$idir/$$program ;       \
239                   $(INSTALL_PROGRAM) $$program $$idir/$$program ;       \
240            done ;                                                       \
241                                                                         \
242            exes="$(SUID_EXES)" ;                                        \
243            if [ @SETUID_HACKS@ = yes ]; then                            \
244              sinst="$(INSTALL_SETUID)" ;                                \
245            else                                                         \
246              sinst="$(INSTALL_PROGRAM)" ;                               \
247            fi ;                                                         \
248            for program in $$exes; do                                    \
249              echo $$sinst $$program $$idir/$$program ;                  \
250              if   $$sinst $$program $$idir/$$program ; then             \
251                 true ;                                                  \
252              elif [ @SETUID_HACKS@ = yes ]; then                        \
253                echo $(INSTALL_PROGRAM) $$program $$idir/$$program ;     \
254                if   $(INSTALL_PROGRAM) $$program $$idir/$$program ; then\
255                  echo "" ;                                              \
256                  echo "WARNING: unable to install $$program setuid:"    \
257                       "installed non-setuid instead." ;                 \
258                  echo "" ;                                              \
259                else                                                     \
260                  exit 1 ;                                               \
261                fi ;                                                     \
262              else                                                       \
263                exit 1 ;                                                 \
264              fi ;                                                       \
265            done ;                                                       \
266          fi
267
268
269 # the xscreensaver-gl-helper program, in $bindir
270 install-program:: $(EXES)
271         @exes="@GL_UTIL_EXES@" ;                                        \
272          idir="$(install_prefix)$(bindir)" ;                            \
273          if [ "$$exes" != "" ]; then                                    \
274            if [ ! -d $$idir ]; then                                     \
275              $(INSTALL_DIRS) $$idir ;                                   \
276            fi ;                                                         \
277            for program in $$exes; do                                    \
278              echo $(INSTALL_PROGRAM) $$program $$idir/$$program ;       \
279                   $(INSTALL_PROGRAM) $$program $$idir/$$program ;       \
280            done ;                                                       \
281          fi
282
283 # When installing man pages, we install "foo.man" as "foo.N" and update
284 # the .TH line in the installed file with one like
285 #
286 #     .TH XScreenSaver N "V.VV (DD-MMM-YYYY)" "X Version 11"
287 #
288 # where N is the manual section suffix.
289 #
290 install-man: $(MEN)
291         @men="$(MEN)" ;                                                 \
292         U=$(UTILS_SRC)/version.h ;                                      \
293         V=`sed -n 's/.*xscreensaver \([0-9]\.[^)]*)\).*/\1/p' < $$U` ;          \
294         T=/tmp/xs$$$$.$(mansuffix) ;                                    \
295         TH=".TH XScreenSaver $(mansuffix) \"$$V\" \"X Version 11\"" ;   \
296         echo "installing man pages: $$TH" ;                             \
297                                                                         \
298         if [ ! -d $(install_prefix)$(manNdir) ]; then                   \
299           $(INSTALL_DIRS) $(install_prefix)$(manNdir) ;                 \
300          fi ;                                                           \
301                                                                         \
302         for man in $$men; do                                            \
303           instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
304           manbase=`echo $$man | sed 's/\.man$$//'` ;    \
305           TH=".TH $$manbase $(mansuffix) \"$$V\" \"X Version 11\" \"XScreenSaver manual\"" ;   \
306           sed -e "s/^\.TH.*/$$TH/"                                      \
307               -e 's@(MANSUFFIX)@($(mansuffix))@g'                       \
308             < $(srcdir)/$$man > $$T ;                                   \
309           echo $(INSTALL_DATA) $(srcdir)/$$man                          \
310            $(install_prefix)$(manNdir)/$$instname ;                     \
311           $(INSTALL_DATA) $$T                                           \
312             $(install_prefix)$(manNdir)/$$instname ;                    \
313         done ;                                                          \
314         rm -f $$T
315
316 install-xml:
317         @dest=$(install_prefix)$(HACK_CONF_DIR) ;                       \
318          if [ ! -d $$dest ]; then                                       \
319            $(INSTALL_DIRS) $$dest ;                                     \
320          fi ;                                                           \
321          src=$(srcdir)/../config ;                                      \
322          for file in $(EXES) $(SCRIPTS) ; do                            \
323            if [ -f $$src/$$file.xml ]; then                             \
324              echo $(INSTALL_DATA) $$src/$$file.xml $$dest/$$file.xml ;  \
325                   $(INSTALL_DATA) $$src/$$file.xml $$dest/$$file.xml ;  \
326            fi ;                                                         \
327         done
328
329 # the hacks, in $HACKDIR
330 uninstall-program::
331         @exes="$(HACK_EXES) $(RETIRED_EXES)" ;                          \
332          idir="$(install_prefix)$(HACKDIR)" ;                           \
333          for program in $$exes; do                                      \
334            echo rm -f $$idir/$$program ;                                \
335                 rm -f $$idir/$$program ;                                \
336          done
337
338 # the xscreensaver-gl-helper program, in $bindir
339 uninstall-program::
340         @exes="$(GL_UTIL_EXES)" ;                                       \
341          idir="$(install_prefix)$(bindir)" ;                            \
342          for program in $$exes; do                                      \
343            echo rm -f $$idir/$$program ;                                \
344                 rm -f $$idir/$$program ;                                \
345         done
346
347 uninstall-man:
348         @men="$(MEN) $(RETIRED_MEN)" ;                                  \
349         for man in $$men; do                                            \
350           instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;     \
351           echo rm -f $(install_prefix)$(manNdir)/$$instname* ;          \
352                rm -f $(install_prefix)$(manNdir)/$$instname* ;          \
353         done
354
355 uninstall-xml:
356         @dest=$(install_prefix)$(HACK_CONF_DIR) ;                       \
357          for file in $(EXES) $(RETIRED_EXES) $(SCRIPTS) ; do            \
358              echo rm -f $$dest/$$file.xml ;                             \
359                   rm -f $$dest/$$file.xml ;                             \
360         done
361
362 clean:
363         -rm -f *.o a.out core $(EXES) $(RETIRED_EXES) molecules.h
364
365 distclean: clean
366         -rm -f Makefile TAGS *~ "#"*
367
368 # Adds all current dependencies to Makefile
369 depend:
370         $(DEPEND) -s '# DO NOT DELETE: updated by make depend'              \
371         $(DEPEND_FLAGS) --                                                  \
372         $(INCLUDES) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) --      \
373         $(SRCS)
374
375 # Adds some dependencies to Makefile.in -- not totally accurate, but pretty
376 # close.  This excludes dependencies on files in /usr/include, etc.  It tries
377 # to include only dependencies on files which are themselves a part of this
378 # package.
379 distdepend:: molecules.h
380         @echo updating dependencies in `pwd`/Makefile.in... ;               \
381         $(DEPEND) -w 0 -f -                                                 \
382         -s '# DO NOT DELETE: updated by make distdepend' $(DEPEND_FLAGS) -- \
383         $(INCLUDES) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) --      \
384         $(SRCS) 2>/dev/null |                                               \
385         sort -d |                                                           \
386         (                                                                   \
387           awk '/^# .*Makefile.in ---/,/^# DO .*distdepend/' < Makefile.in ; \
388           sed -e '/^#.*/d'                                                  \
389               -e 's@ \./@ @g;s@ /[^ ]*@@g;/^.*:$$/d'                        \
390               -e 's@\.\./\.\./utils@$$(UTILS_SRC)@g'                        \
391               -e 's@\.\./glx/@@g'                                           \
392               -e 's@ \.\./@ $$(HACK_SRC)/@g'                                \
393               -e 's@ \([^$$]\)@ $$(srcdir)/\1@g'                            \
394               -e 's@ $$(srcdir)/\(.*config.h\)@ \1@g'                       \
395               -e 's@ $$(HACK_SRC)/\(.*config.h\)@ ../\1@g'                  \
396               -e 's@ $$(srcdir)/\(.*molecules.h\)@ \1@g' ;                  \
397           echo ''                                                           \
398         ) > /tmp/distdepend.$$$$ &&                                         \
399         mv Makefile.in Makefile.in.bak &&                                   \
400         mv /tmp/distdepend.$$$$ Makefile.in
401
402
403 TAGS: tags
404 tags:
405         find $(srcdir) -name '*.[chly]' -print | xargs etags -a
406
407 echo_tarfiles:
408         @echo $(TARFILES)
409
410 check_men:
411         @badmen="" ;                                                    \
412          for exe in $(EXES); do                                         \
413            if ! [ -f $(srcdir)/$$exe.man ]; then                        \
414              badmen="$$badmen $$exe" ;                                  \
415            fi ;                                                         \
416          done ;                                                         \
417          if [ -n "$$badmen" ]; then                                     \
418            echo "" ;                                                    \
419            echo "Warning: The following programs have no manuals:" ;    \
420            echo "" ;                                                    \
421            for m in $$badmen ; do                                       \
422              echo "    $$m" ;                                           \
423            done ;                                                       \
424          fi
425
426 validate_xml:
427         @echo "Validating XML..." ; \
428         cd $(HACK_SRC) ; ./check-configs.pl $(EXES)
429
430 distdepend:: check_men validate_xml
431
432
433
434 # Rules for noticing when the objects from the utils directory are out of
435 # date with respect to their sources, and going and building them according
436 # to the rules in their own Makefile...
437 #
438 $(UTILS_BIN)/colors.o:          $(UTILS_SRC)/colors.c
439 $(UTILS_BIN)/grabclient.o:      $(UTILS_SRC)/grabclient.c
440 $(UTILS_BIN)/hsv.o:             $(UTILS_SRC)/hsv.c
441 $(UTILS_BIN)/resources.o:       $(UTILS_SRC)/resources.c
442 $(UTILS_BIN)/usleep.o:          $(UTILS_SRC)/usleep.c
443 $(UTILS_BIN)/visual.o:          $(UTILS_SRC)/visual.c
444 $(UTILS_BIN)/visual-gl.o:       $(UTILS_SRC)/visual-gl.c
445 $(UTILS_BIN)/yarandom.o:        $(UTILS_SRC)/yarandom.c
446 $(UTILS_BIN)/xshm.o:            $(UTILS_SRC)/xshm.c
447
448 $(UTIL_OBJS):
449         cd $(UTILS_BIN) ; \
450         $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
451
452 $(HACK_BIN)/xlockmore.o: $(HACK_SRC)/xlockmore.c
453         cd $(HACK_BIN)  ; $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)"
454
455
456 # How we build object files in this directory.
457 .c.o:
458         $(CC) -c $(INCLUDES) $(DEFS) $(CFLAGS) $(X_CFLAGS) $<
459
460
461 # How to build the "xscreensaver-gl-helper" program, that lets the daemon
462 # know which visual is the right one for GL programs.
463 #
464 HELPER_OBJS = xscreensaver-gl-helper.o $(UTILS_BIN)/visual-gl.o \
465               $(UTILS_BIN)/visual.o $(UTILS_BIN)/resources.o
466 xscreensaver-gl-helper: $(HELPER_OBJS)
467         $(CC) $(LDFLAGS) -o $@ $(HELPER_OBJS) $(LIBS) $(X_LIBS) $(HACK_POST2)
468
469
470 # These hacks use a slightly-differently-compiled variant of xlockmore.c.
471 # This is how to make the the other .o file from it.
472 #
473 XLM_CFLAGS=-DUSE_GL $(INCLUDES) $(DEFS) $(CFLAGS) $(X_CFLAGS)
474 xlockmore-gl.o: $(HACK_SRC)/xlockmore.c
475         $(CC) -o $@ -c $(XLM_CFLAGS) $(HACK_SRC)/xlockmore.c
476
477 CC_HACK         = $(CC) $(LDFLAGS)
478
479 TRACK_OBJS=rotator.o trackball.o gltrackball.o
480 HACK_TRACK_OBJS=$(HACK_OBJS) $(TRACK_OBJS)
481 HACK_GRAB_OBJS=$(HACK_OBJS) $(GRAB_OBJS)
482 HACK_TRACK_GRAB_OBJS=$(HACK_TRACK_OBJS) $(GRAB_OBJS)
483
484 ATLANTIS_OBJS = $(HACK_OBJS) dolphin.o shark.o swim.o whale.o xpm-ximage.o
485 atlantis:       atlantis.o      $(ATLANTIS_OBJS)
486         $(CC_HACK) -o $@ $@.o   $(ATLANTIS_OBJS) $(XPM_LIBS)
487
488 ATUNNEL_OBJS = $(HACK_OBJS) tunnel_draw.o xpm-ximage.o
489 atunnel:        atunnel.o       $(ATUNNEL_OBJS)
490         $(CC_HACK) -o $@ $@.o   $(ATUNNEL_OBJS) $(XPM_LIBS)
491
492 cage:           cage.o          $(HACK_OBJS)
493         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
494
495 FLURRY_OBJS_1 = flurry-smoke.o flurry-spark.o flurry-star.o flurry-texture.o
496 FLURRY_OBJS = $(FLURRY_OBJS_1) $(HACK_OBJS)
497
498 flurry:         flurry.o        $(FLURRY_OBJS)
499         $(CC_HACK) -o $@ $@.o   $(FLURRY_OBJS) $(HACK_LIBS) -lm
500
501 GEARS_OBJS=normals.o involute.o $(HACK_TRACK_OBJS)
502 gears:          gears.o         tube.o $(GEARS_OBJS)
503         $(CC_HACK) -o $@ $@.o   tube.o $(GEARS_OBJS) $(HACK_LIBS)
504
505 moebius:        moebius.o       $(HACK_TRACK_OBJS)
506         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
507
508 PIPE_OBJS=pipeobjs.o buildlwo.o teapot.o
509 pipes:          pipes.o         $(PIPE_OBJS) $(HACK_OBJS)
510         $(CC_HACK) -o $@ $@.o   $(PIPE_OBJS) $(HACK_OBJS) $(HACK_LIBS)
511
512 superquadrics:  superquadrics.o $(HACK_OBJS)
513         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
514
515 morph3d:        morph3d.o       $(HACK_OBJS)
516         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
517
518 rubik:          rubik.o         $(HACK_OBJS)
519         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
520
521 stairs:         stairs.o        sphere.o $(HACK_TRACK_OBJS)
522         $(CC_HACK) -o $@ $@.o   sphere.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
523
524 SPROINGIES = sproingiewrap.o gllist.o \
525              s1_1.o s1_2.o s1_3.o s1_4.o s1_5.o s1_6.o s1_b.o
526 sproingies: sproingies.o        $(HACK_OBJS) $(SPROINGIES)
527         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(SPROINGIES) $(HACK_LIBS)
528
529 LAMENTOBJS = $(HACK_TRACK_OBJS) xpm-ximage.o normals.o
530 lament:         lament.o        $(LAMENTOBJS)
531         $(CC_HACK) -o $@ $@.o   $(LAMENTOBJS) $(XPM_LIBS)
532
533 B3D_OBJS = b_sphere.o b_draw.o b_lockglue.o $(HACK_OBJS)
534 bubble3d:       bubble3d.o      $(B3D_OBJS)
535         $(CC_HACK) -o $@ $@.o   $(B3D_OBJS) $(HACK_LIBS)
536
537 PLANET_OBJS=sphere.o xpm-ximage.o $(HACK_TRACK_OBJS)
538 glplanet:       glplanet.o      $(PLANET_OBJS)
539         $(CC_HACK) -o $@ $@.o   $(PLANET_OBJS) $(XPM_LIBS)
540
541 pulsar:         pulsar.o        $(HACK_OBJS) xpm-ximage.o
542         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) xpm-ximage.o $(XPM_LIBS)
543
544 EXTRUSION_OBJS=extrusion.o extrusion-helix2.o extrusion-helix3.o    \
545         extrusion-helix4.o extrusion-joinoffset.o extrusion-screw.o \
546         extrusion-taper.o extrusion-twistoid.o xpm-ximage.o \
547         $(HACK_TRACK_OBJS)
548 extrusion:                      $(EXTRUSION_OBJS)
549         $(CC_HACK) -o $@        $(EXTRUSION_OBJS) $(XPM_LIBS) $(GLE_LIBS)
550
551 sierpinski3d:   sierpinski3d.o  $(HACK_TRACK_OBJS)
552         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
553
554 gflux:          gflux.o         $(HACK_TRACK_GRAB_OBJS)
555         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_GRAB_OBJS) $(HACK_LIBS)
556
557 SW_OBJS=starwars.o glut_stroke.o glut_swidth.o texfont.o $(HACK_OBJS)
558 starwars:                       $(SW_OBJS)
559         $(CC_HACK) -o $@        $(SW_OBJS) $(HACK_LIBS)
560
561 GLT_OBJS=gltext.o glut_stroke.o glut_swidth.o tube.o $(HACK_TRACK_OBJS)
562 gltext:                         $(GLT_OBJS)
563         $(CC_HACK) -o $@        $(GLT_OBJS) $(HACK_LIBS)
564
565 DB_OBJS=sphere.o tube.o $(HACK_TRACK_OBJS)
566 dangerball:     dangerball.o    $(DB_OBJS)
567         $(CC_HACK) -o $@ $@.o   $(DB_OBJS) $(HACK_LIBS)
568
569 circuit:        circuit.o       font-ximage.o $(HACK_OBJS)
570         $(CC_HACK) -o $@ $@.o   font-ximage.o $(HACK_OBJS) $(HACK_LIBS)
571
572 menger:         menger.o        $(HACK_TRACK_OBJS)
573         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
574
575 engine:         engine.o        $(HACK_TRACK_OBJS)
576         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
577
578 flipscreen3d:   flipscreen3d.o  $(HACK_TRACK_GRAB_OBJS)
579         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_GRAB_OBJS) $(HACK_LIBS)
580
581 glsnake:        glsnake.o       $(HACK_OBJS)
582         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
583
584 boxed:          boxed.o         $(HACK_OBJS)
585         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
586
587 glforestfire:   glforestfire.o  xpm-ximage.o $(HACK_TRACK_OBJS)
588         $(CC_HACK) -o $@ $@.o   xpm-ximage.o $(HACK_TRACK_OBJS) $(XPM_LIBS)
589
590 sballs:         sballs.o        xpm-ximage.o $(HACK_TRACK_OBJS)
591         $(CC_HACK) -o $@ $@.o   xpm-ximage.o $(HACK_TRACK_OBJS) $(XPM_LIBS)
592
593 cubenetic:      cubenetic.o     $(HACK_TRACK_OBJS)
594         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
595
596 spheremonics:   spheremonics.o  normals.o $(HACK_TRACK_OBJS)
597         $(CC_HACK) -o $@ $@.o   normals.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
598
599 LL_OBJS=marching.o xpm-ximage.o normals.o $(HACK_TRACK_OBJS)
600 lavalite:       lavalite.o      $(LL_OBJS)
601         $(CC_HACK) -o $@ $@.o   $(LL_OBJS) $(XPM_LIBS)
602
603 queens:         queens.o        $(HACK_TRACK_OBJS)
604         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
605
606 endgame:        endgame.o       chessmodels.o $(HACK_TRACK_OBJS)
607         $(CC_HACK) -o $@ $@.o   chessmodels.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
608
609 glblur: glblur.o                $(HACK_TRACK_OBJS)
610         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
611
612 TOAST_OBJS=\
613   toaster.o toaster_base.o toaster_handle.o toaster_handle2.o \
614   toaster_jet.o toaster_knob.o toaster_slots.o toaster_wing.o \
615   toast.o toast2.o \
616   flyingtoasters.o gllist.o xpm-ximage.o $(HACK_TRACK_OBJS)
617 flyingtoasters:                 $(TOAST_OBJS)
618         $(CC_HACK) -o $@        $(TOAST_OBJS) $(XPM_LIBS)
619
620 COW_OBJS=\
621   cow_face.o cow_hide.o cow_hoofs.o cow_horns.o cow_tail.o cow_udder.o \
622   bouncingcow.o gllist.o xpm-ximage.o $(HACK_TRACK_OBJS)
623 bouncingcow:                    $(COW_OBJS)         
624         $(CC_HACK) -o $@        $(COW_OBJS) $(XPM_LIBS)
625
626 glslideshow:    glslideshow.o   $(HACK_GRAB_OBJS)
627         $(CC_HACK) -o $@ $@.o   $(HACK_GRAB_OBJS) $(HACK_LIBS)
628
629 jigglypuff:     jigglypuff.o    xpm-ximage.o $(HACK_TRACK_OBJS)
630         $(CC_HACK) -o $@ $@.o   xpm-ximage.o $(HACK_TRACK_OBJS) $(XPM_LIBS)
631
632 klein:          klein.o         $(HACK_TRACK_OBJS)
633         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
634
635 surfaces:       surfaces.o      $(HACK_TRACK_OBJS)
636         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
637
638 hypertorus:     hypertorus.o    $(HACK_TRACK_OBJS)
639         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
640
641 glmatrix:       glmatrix.o      xpm-ximage.o $(HACK_OBJS)
642         $(CC_HACK) -o $@ $@.o   xpm-ximage.o $(HACK_OBJS) $(XPM_LIBS)
643
644 cubestorm:      cubestorm.o     $(HACK_TRACK_OBJS)
645         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
646
647 glknots:        glknots.o       tube.o $(HACK_TRACK_OBJS)
648         $(CC_HACK) -o $@ $@.o   tube.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
649
650 blocktube:      blocktube.o     xpm-ximage.o $(HACK_OBJS)
651         $(CC_HACK) -o $@ $@.o   xpm-ximage.o $(HACK_OBJS) $(XPM_LIBS)
652
653 flipflop:       flipflop.o      $(HACK_TRACK_GRAB_OBJS)
654         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_GRAB_OBJS) $(HACK_LIBS)
655
656 antspotlight:   antspotlight.o  $(HACK_TRACK_GRAB_OBJS)
657         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_GRAB_OBJS) $(HACK_LIBS)
658
659 polytopes:      polytopes.o     $(HACK_TRACK_OBJS)
660         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
661
662 STONER_OBJS=stonerview-move.o stonerview-osc.o stonerview-view.o
663 stonerview:     stonerview.o    $(STONER_OBJS) $(HACK_TRACK_OBJS)
664         $(CC_HACK) -o $@ $@.o   $(STONER_OBJS) $(HACK_TRACK_OBJS) $(HACK_LIBS)
665
666
667 molecules.h:
668         @echo "building molecules.h from $(HACK_SRC)/images/molecules/*.pdb"; \
669         UTILS_SRC="$(UTILS_SRC)" \
670         $(srcdir)/molecules.sh molecules.h $(HACK_SRC)/images/molecules/*.pdb
671
672 MOLECULE_OBJS=sphere.o tube.o $(HACK_TRACK_OBJS)
673 molecule:       molecule.o      $(MOLECULE_OBJS)
674         $(CC_HACK) -o $@ $@.o   $(MOLECULE_OBJS) $(HACK_LIBS)
675
676 gleidescope:    gleidescope.o   xpm-ximage.o $(HACK_GRAB_OBJS)
677         $(CC_HACK) -o $@ $@.o   xpm-ximage.o $(HACK_GRAB_OBJS) $(XPM_LIBS)
678
679 mirrorblob:     mirrorblob.o    $(HACK_TRACK_GRAB_OBJS)
680         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_GRAB_OBJS) $(XPM_LIBS)
681
682 blinkbox:       blinkbox.o      sphere.o $(HACK_OBJS)
683         $(CC_HACK) -o $@ $@.o   sphere.o $(HACK_OBJS) $(HACK_LIBS)
684
685 noof:   noof.o                  $(HACK_OBJS)
686         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
687
688 PH_OBJS=polyhedra-gl.o normals.o teapot.o $(HACK_TRACK_OBJS)
689 polyhedra:      polyhedra.o     $(PH_OBJS)
690         $(CC_HACK) -o $@ $@.o   $(PH_OBJS) $(HACK_LIBS)
691
692 antinspect:     antinspect.o    $(HACK_TRACK_OBJS)
693         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
694
695 providence:     providence.o    $(HACK_TRACK_OBJS)
696         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
697
698 pinion:         pinion.o        $(GEARS_OBJS)
699         $(CC_HACK) -o $@ $@.o   $(GEARS_OBJS) $(HACK_LIBS)
700
701 moebiusgears:   moebiusgears.o  $(GEARS_OBJS)
702         $(CC_HACK) -o $@ $@.o   $(GEARS_OBJS) $(HACK_LIBS)
703
704 boing:          boing.o         normals.o $(HACK_TRACK_OBJS)
705         $(CC_HACK) -o $@ $@.o   normals.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
706
707 carousel:       carousel.o      texfont.o $(HACK_TRACK_GRAB_OBJS)
708         $(CC_HACK) -o $@ $@.o   texfont.o $(HACK_TRACK_GRAB_OBJS) $(HACK_LIBS)
709
710 fliptext:       fliptext.o      texfont.o $(HACK_OBJS)
711         $(CC_HACK) -o $@ $@.o   texfont.o $(HACK_OBJS) $(HACK_LIBS)
712
713 antmaze:        antmaze.o       $(HACK_TRACK_OBJS)
714         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
715
716 TANGRAM_OBJS=tangram_shapes.o $(HACK_OBJS)
717 tangram:        tangram.o       $(TANGRAM_OBJS)
718         $(CC_HACK) -o $@ $@.o   $(TANGRAM_OBJS) $(HACK_LIBS)
719
720 crackberg:      crackberg.o     $(HACK_OBJS)
721         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
722
723 glhanoi:        glhanoi.o       $(HACK_TRACK_OBJS)
724         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
725
726 cube21:         cube21.o        $(HACK_OBJS)
727         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
728
729 TIMETUNNEL_OBJS = xpm-ximage.o  $(HACK_TRACK_OBJS)
730 timetunnel:     timetunnel.o    $(TIMETUNNEL_OBJS)
731         $(CC_HACK) -o $@ $@.o   $(TIMETUNNEL_OBJS) $(XPM_LIBS)
732
733 JUGG_OBJS=sphere.o tube.o $(HACK_TRACK_OBJS)
734 juggler3d:      juggler3d.o     $(JUGG_OBJS)
735         $(CC_HACK) -o $@ $@.o   $(JUGG_OBJS) $(HACK_LIBS)
736
737 dnalogo:        dnalogo.o      tube.o normals.o $(HACK_TRACK_OBJS)
738         $(CC_HACK) -o $@ $@.o  tube.o normals.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
739
740 topblock:       topblock.o      sphere.o $(HACK_TRACK_OBJS)
741         $(CC_HACK) -o $@ $@.o   sphere.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
742
743 SCHOOL_OBJS=glschool.o glschool_alg.o glschool_gl.o sphere.o tube.o $(HACK_OBJS)
744 glschool: $(SCHOOL_OBJS)
745         $(CC_HACK) -o $@ $(SCHOOL_OBJS) $(HACK_LIBS)
746
747 glcells:        glcells.o       $(HACK_OBJS)
748         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
749
750 voronoi:        voronoi.o       $(HACK_OBJS)
751         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
752
753 lockward:       lockward.o      $(HACK_OBJS)
754         $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
755
756 cubicgrid:      cubicgrid.o     $(HACK_TRACK_OBJS)
757         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
758
759 hypnowheel:     hypnowheel.o    $(HACK_TRACK_OBJS)
760         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
761
762 TENTACLE_OBJS=normals.o xpm-ximage.o $(HACK_TRACK_OBJS)
763 skytentacles:   skytentacles.o  $(TENTACLE_OBJS)
764         $(CC_HACK) -o $@ $@.o   $(TENTACLE_OBJS) $(XPM_LIBS)
765
766 SONAR_OBJS=sonar-sim.o sonar-icmp.o texfont.o $(HACK_TRACK_OBJS)
767 sonar:          sonar.o         $(SONAR_OBJS)
768         $(CC_HACK) -o $@ $@.o   $(SONAR_OBJS) $(XPM_LIBS)
769
770 JIGSAW_OBJS=normals.o $(UTILS_BIN)/spline.o $(HACK_TRACK_GRAB_OBJS)
771 jigsaw:         jigsaw.o        $(JIGSAW_OBJS)
772         $(CC_HACK) -o $@ $@.o   $(JIGSAW_OBJS) $(HACK_LIBS)
773
774 photopile:      photopile.o     texfont.o $(HACK_GRAB_OBJS)
775         $(CC_HACK) -o $@ $@.o   texfont.o $(HACK_GRAB_OBJS) $(HACK_LIBS)
776
777 rubikblocks:    rubikblocks.o   $(HACK_TRACK_OBJS)
778         $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
779
780 ##############################################################################
781 #
782 # DO NOT DELETE: updated by make distdepend
783