#ifndef XCOMM
#define XCOMM /**/#
#endif
XCOMM @(#)Sub Imakefile	xlockmore
XCOMM

#include "../../iconfig.h"

UTILDIR = $(top_srcdir)/xlock/
MODEDIR = $(top_srcdir)/modes/
GLDIR = $(top_srcdir)/modes/glx/
UTILOBJDIR = ../../xlock/
MODEOBJDIR = ../
GLOBJDIR = ./

DM =
DU = $(UTILDIR)
DOU = $(UTILOBJDIR)
DG = $(GLDIR)
DOG = $(GLOBJDIR)
OM = $(O)$(S)$(DM)
OU = $(O)$(S)$(DOU)
OG = $(O)$(S)$(DOG)
CM = $(C) $(DM)
CU = $(C) $(DU)
CG = $(C) $(DG)
CXG = $(CX) $(DG)

XCOMM  List of object files
#ifdef GLLibrary
#ifdef Unstable
XCOMM XLOCKUNSTABLEGLOBJS =
#endif
#ifdef CPPCompiler
INVERTOBJS = $(DOG)i_figureeight$(O)$(S)\
$(DOG)i_linkage$(OG)i_sphere$(OG)i_spline$(O)$(S)\
$(DOG)i_threejet$(OG)i_threejetvec$(O)$(S)\
$(DOG)i_twojet$(OG)i_twojetvec$(O)
XLOCKDEPCPPGLOBJS = $(INVERTOBJS)
XLOCKMULTCPPGLOBJS = $(DOG)invert$(O)
#if defined(TtfLibrary) && defined(GlttLibrary)
XLOCKTEXTGLOBJS = $(DOG)text3d$(O)
#endif
#if defined(FreetypeLibrary) && defined(FtglLibrary)
XLOCKTEXT2GLOBJS = $(DOG)text3d2$(O)
#endif
#endif
SPROINGIESOBJS = $(DOG)buildlwo$(OG)sproingiewrap$(OG)s1_b$(O)$(S)\
$(DOG)s1_1$(OG)s1_2$(OG)s1_3$(OG)s1_4$(OG)s1_5$(OG)s1_6$(O)
ATLANTISOBJS = $(DOG)dolphin$(OG)shark$(OG)swim$(OG)whale$(O)
ATUNNELSOBJS = $(DOG)tunnel_draw$(O)
BUBBLE3DOBJS = $(DOG)b_draw$(OG)b_sphere$(OG)b_lockglue$(O)
GLPLANETOBJS = $(DOG)sphere$(O)
MOLECULEOBJS = $(DOG)tube$(OG)sphere$(O)
JUGGLER3DOBJS = $(DOG)tube$(OG)sphere$(OG)rotator$(O)$(S)\
$(DOG)glxfonts$(OG)gltrackball$(OG)trackball$(O)
XLOCKDEPGLOBJS = $(DOG)xpm-ximage$(OG)pipeobjs$(O)$(S)\
$(SPROINGIESOBJS)$(S)$(ATLANTISOBJS)$(S)$(ATUNNELSOBJS)$(S)\
$(BUBBLE3DOBJS)$(S)$(JUGGLER3DOBJS)$(S)$(XLOCKDEPCPPGLOBJS)
XLOCKNORMGLOBJS = $(DOG)bevel$(OG)cage$(OG)dino$(O)$(S)\
$(DOG)gears$(OG)mball$(OG)moebius$(OG)morph3d$(OG)noof$(O)$(S)\
$(DOG)oct$(OG)pyraminx$(OG)rubik$(OG)sierpinski3d$(O)$(S)\
$(DOG)skewb$(OG)stairs$(OG)superquadrics$(O)$(S)\
$(XLOCKTEXTGLOBJS)$(S)\
$(XLOCKTEXT2GLOBJS)$(S)$(XLOCKUNSTABLEGLOBJS)
XLOCKMULTGLOBJS = $(DOG)fire$(OG)lament$(OG)sballs$(OG)molecule$(O)$(S)\
$(DOG)pipes$(OG)sproingies$(OG)atlantis$(OG)atunnels$(O)$(S)\
$(DOG)bubble3d$(OG)glplanet$(OG)juggler3d$(O)$(S)$(XLOCKMULTCPPGLOBJS)
XLOCKGLOBJS = $(XLOCKNORMGLOBJS)$(S)\
$(XLOCKDEPGLOBJS)$(S)$(XLOCKMULTGLOBJS)
#endif
XCOMM default target

$(CX)$(O) :
	$(CXX) -c $(CFLAGS) $<
XCOMM	Sun and gcc
XCOMM	$(CXX) -c -isystem /usr/openwin/include $(CFLAGS) $<

#ifdef Modules

NORMMODULES = $(XLOCKNORMMODEOBJS:.o=.xlk)

MULTMODULES = $(XLOCKMULTMODEOBJS:.o=.xlk)

MODULES = $(NORMMODULES) $(MULTMODULES)

EXTRA_LDOPTIONS += $(MODULEFLAGS)
AllTarget($(MODULES))

InstallMultiple($(MODULES), $(DEF_MODULEPATH))

$(NORMMODULES) : %.xlk:%.o
	$(RM) $@
	$(CCLINK) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $<

$(DOG)fire.xlk : $(DOG)xpm-ximage.o
$(DOG)lament.xlk : $(DOG)xpm-ximage.o
$(DOG)sballs.xlk : $(DOG)xpm-ximage.o

$(DOG)fire.xlk $(DOG)lament.xlk $(DOG)sballs.xlk : %.xlk:%.o
	$(RM) $@
	$(CCLINK) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(DOG)xpm-ximage.o $<

$(DOG)pipes.xlk : $(DOG)buildlwo.o $(DOG)pipeobjs.o

$(DOG)pipes.xlk : %.xlk:%.o
	$(RM) $@
	$(CCLINK) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(DOG)buildlwo.o $(DOG)pipeobjs.o $<

$(DOG)sproingies.xlk : $(SPROINGIESOBJS)

$(DOG)sproingies.xlk : %.xlk:%.o
	$(RM) $@
	$(CCLINK) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(SPROINGIESOBJS) $<

$(DOG)atlantis.xlk : $(ATLANTISOBJS) $(DOG)xpm-ximage.o

$(DOG)atlantis.xlk : %.xlk:%.o
	$(RM) $@
	$(CCLINK) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(ATLANTISOBJS) $(DOG)xpm-ximage.o $<


$(DOG)bubble3d.xlk : $(BUBBLE3DOBJS)

$(DOG)bubble3d.xlk : %.xlk:%.o
	$(RM) $@
	$(CCLINK) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(BUBBLE3DOBJS) $<

$(DOG)glplanet.xlk : $(GLPLANETOBJS) $(DOG)xpm-ximage.o

$(DOG)glplanet.xlk : %.xlk:%.o
	$(RM) $@
	$(CCLINK) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(GLPLANETOBJS) $(DOG)xpm-ximage.o $<

$(DOG)molecule.xlk : $(MOLECULEOBJS)

$(DOG)molecule.xlk : %.xlk:%.o
	$(RM) $@
	$(CCLINK) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(MOLECULEOBJS) $<

$(DOG)juggler3d.xlk : $(JUGGLER3DOBJS)

$(DOG)juggler3d.xlk : %.xlk:%.o
	$(RM) $@
	$(CCLINK) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(JUGGLER3DOBJS) $<

#ifdef CPPCompiler

$(DOG)invert.xlk : $(INVERTOBJS)

$(DOG)invert.xlk : %.xlk:%.o
	$(RM) $@
	$(CCLINK) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(INVERTOBJS) $<
#endif

clean::
	$(RM) *.xlk .pure

#else
all:: $(XLOCKGLOBJS)
#endif

XLOCKINC = -I. -I../.. -I../../xlock

DependTarget()
LintTarget()

distclean::	clean
	$(RM) Makefile config.status config.cache config.log config.h

clean.all:: distclean
