/*
 * Imakefile file for xscreensaver, Copyright (c) 1993, 1995 Jamie Zawinski.
 *
 * You should not need to edit this file; edit ../config.h instead.
 *
 */

#include "../config.h"

#ifdef HAVE_XPM
 /* Yeah, this means that all hacks link against libXpm even though only
    one hack actually uses it.  It doesn't matter: it's a library. */
# define XPMDEFS -DHAVE_XPM
# define XPMLIB -lXpm
#else
# define XPMDEFS
# define XPMLIB
#endif

          STAR = *
          UTILS = ../utils
       INCLUDES = -I$(UTILS)
        DEFINES = R5ISMS XPMDEFS
LOCAL_LIBRARIES = $(XMULIB) $(XTOOLLIB) XPMLIB $(EXTENSIONLIB) $(XLIB) -lm
          HACKS = attraction.c greynetic.c helix.c hopalong.c xroger-hack.c \
                  noseguy.c pyro.c qix.c rocks.c rorschach.c blitspin.c \
                  imsmap.c slidescreen.c decayscreen.c maze.c hypercube.c \
                  halo.c flame.c pedal.c lmorph.c \
		  bubbles.c bubbles.h bubbles_default.c
            MEN = attraction.man greynetic.man helix.man hopalong.man \
                  noseguy.man pyro.man xroger.man qix.man rocks.man \
                  rorschach.man blitspin.man imsmap.man slidescreen.man \
                  decayscreen.man maze.man hypercube.man halo.man flame.man \
                  pedal.man lmorph.man \
		  bubbles.man bubbles.README
       TARFILES = README Imakefile screenhack.c $(HACKS) screenhack.h \
                  vroot.h xlock.h default.xbm $(MEN) .gdbinit \
		  noses/nose.$(STAR) \
		  bubbles-tools/bubbles$(STAR) \
		  bubbles-tools/xpm$(STAR) \
		  bubbles-sources/$(STAR).pov \
		  bubbles-samples/$(STAR).bub.gz

all::

echo_tarfiles:
	@echo $(TARFILES)

#define	ScreenhackTarget(p,ps,deps)					 @@\
all:: p									 @@\
p: deps screenhack.h ps.o $(DEPLIBS)					 @@\
	RemoveTargetProgram($@)						 @@\
	$(CCENVSETUP)							   \
	$(CC) -o $@ $(LDOPTIONS) deps ps.o $(LOCAL_LIBRARIES) $(LDLIBS)  @@\
									 @@\
InstallProgram(p,$(BINDIR))						 @@\
InstallManPage(p,$(MANDIR))						 @@\
clean::									 @@\
	$(RM) p

HOBJS=screenhack.o $(UTILS)/resources.o $(UTILS)/visual.o \
		   $(UTILS)/usleep.o $(UTILS)/yarandom.o

ScreenhackTarget (qix, qix, $(HOBJS) $(UTILS)/hsv.o)
ScreenhackTarget (helix, helix, $(HOBJS) $(UTILS)/hsv.o)
ScreenhackTarget (pyro, pyro, $(HOBJS) $(UTILS)/hsv.o)
ScreenhackTarget (attraction, attraction, $(HOBJS) $(UTILS)/hsv.o $(UTILS)/spline.o)
ScreenhackTarget (rorschach, rorschach, $(HOBJS) $(UTILS)/hsv.o)
ScreenhackTarget (hopalong, hopalong, $(HOBJS) $(UTILS)/hsv.o)
ScreenhackTarget (xroger, xroger-hack, $(HOBJS) $(UTILS)/hsv.o $(UTILS)/xroger.o)
ScreenhackTarget (rocks, rocks, $(HOBJS))
ScreenhackTarget (noseguy, noseguy, $(HOBJS))
ScreenhackTarget (blitspin, blitspin, $(HOBJS))
ScreenhackTarget (greynetic, greynetic, $(HOBJS))
ScreenhackTarget (slidescreen, slidescreen, $(HOBJS) $(UTILS)/grabscreen.o)
ScreenhackTarget (decayscreen, decayscreen, $(HOBJS) $(UTILS)/grabscreen.o)
ScreenhackTarget (imsmap, imsmap, $(HOBJS) $(UTILS)/hsv.o)
ScreenhackTarget (maze, maze, $(HOBJS) $(UTILS)/xroger.o)
ScreenhackTarget (hypercube, hypercube, $(HOBJS))
ScreenhackTarget (halo, halo, $(HOBJS) $(UTILS)/hsv.o)
ScreenhackTarget (flame, flame, $(HOBJS) $(UTILS)/hsv.o)
ScreenhackTarget (pedal, pedal, $(HOBJS) $(UTILS)/hsv.o)
ScreenhackTarget (lmorph, lmorph, $(HOBJS))
ScreenhackTarget (bubbles, bubbles, bubbles_default.o $(HOBJS))
