# Very simple makefile to build the Tao examples

CSC = /usr/bin/gmcs /target:winexe
SYSTEM_LIBS = /r:System
DRAWING_LIBS = /r:System.Windows.Forms /r:System.Data /r:System.Drawing

# unsupported:
#  CgExamples (libCg is not in Debian)
#  GlfwExamples (Glfw is Windows-only)
#  NeHe (examples require Windows specific stuff)
SUBDIRS = OdeExamples.Basic SdlExamples DevIlExamples.SimpleExample \
	  LuaExamples.Functions LuaExamples.Simple OpenAlExamples \
	  FFmpegExamples PhysFsExamples.Simple FreeGlutExamples.One \
	  NateRobins Redbook GeWangExamples
TARGETS = $(addsuffix /Example.exe, $(SUBDIRS))

all: $(TARGETS)

clean:
	rm -f $(TARGETS)

ODE_DIR = OdeExamples.Basic
ODE_SRC = Basic.cs
$(ODE_DIR)/Example.exe: $(addprefix $(ODE_DIR)/, $(ODE_SRC))
	$(CSC) /out:$@ $^ /pkg:tao-ode $(SYSTEM_LIBS)

SDL_DIR = SdlExamples
SDL_SRC = GfxPrimitives.cs Program.cs Rectangles.cs SdlExamples.cs \
	  SdlExamples.Designer.cs SmpegPlayer.cs
$(SDL_DIR)/Example.exe: $(addprefix $(SDL_DIR)/, $(SDL_SRC))
	$(CSC) /out:$@ $^ /pkg:tao-sdl $(SYSTEM_LIBS) $(DRAWING_LIBS)

DEVIL_DIR = DevIlExamples.SimpleExample
DEVIL_SRC = SimpleExample.cs
$(DEVIL_DIR)/Example.exe: $(addprefix $(DEVIL_DIR)/, $(DEVIL_SRC))
	$(CSC) /out:$@ $^ /pkg:tao-devil $(SYSTEM_LIBS)

LUA1_DIR = LuaExamples.Functions
LUA1_SRC = Functions.cs
$(LUA1_DIR)/Example.exe: $(addprefix $(LUA1_DIR)/, $(LUA1_SRC))
	$(CSC) /out:$@ $^ /pkg:tao-lua $(SYSTEM_LIBS)

LUA2_DIR = LuaExamples.Simple
LUA2_SRC = Simple.cs
$(LUA2_DIR)/Example.exe: $(addprefix $(LUA2_DIR)/, $(LUA2_SRC))
	$(CSC) /out:$@ $^ /pkg:tao-lua $(SYSTEM_LIBS)

OPENAL_DIR = OpenAlExamples
OPENAL_SRC = Boxes.cs Lesson01.cs Lesson02.cs Lesson03.cs Lesson05.cs \
	     OpenAlExamples.cs OpenAlExamples.Designer.cs Program.cs \
	     Sound.cs Waterfall.cs
$(OPENAL_DIR)/Example.exe: $(addprefix $(OPENAL_DIR)/, $(OPENAL_SRC))
	$(CSC) /out:$@ $^ /pkg:tao-openal /pkg:tao-freeglut /pkg:tao-opengl $(SYSTEM_LIBS) $(DRAWING_LIBS)

FFMPEG_DIR = FFmpegExamples
FFMPEG_SRC = AudioStream.cs Decoder.cs Player.cs Player.Designer.cs Program.cs
$(FFMPEG_DIR)/Example.exe: $(addprefix $(FFMPEG_DIR)/, $(FFMPEG_SRC))
	$(CSC) /out:$@ $^ /pkg:tao-ffmpeg /pkg:tao-openal $(SYSTEM_LIBS) $(DRAWING_LIBS)

PHYSFS_DIR = PhysFsExamples.Simple
PHYSFS_SRC = Simple.cs
$(PHYSFS_DIR)/Example.exe: $(addprefix $(PHYSFS_DIR)/, $(PHYSFS_SRC))
	$(CSC) /out:$@ $^ /pkg:tao-physfs $(SYSTEM_LIBS)

FREEGLUT_DIR = FreeGlutExamples.One
FREEGLUT_SRC = One.cs
$(FREEGLUT_DIR)/Example.exe: $(addprefix $(FREEGLUT_DIR)/, $(FREEGLUT_SRC))
	$(CSC) /out:$@ $^ /pkg:tao-freeglut $(SYSTEM_LIBS)

OPENGL1_DIR = NateRobins
OPENGL1_SRC = Area.cs Maiden.cs MultiView.cs NateRobins.cs \
	      NateRobins.Designer.cs Nii.cs Node.cs Null.cs Point.cs \
	      Program.cs Qix.cs Rotate.cs Starfield.cs Strip.cs Texture.cs \
	      Voronoi.cs
$(OPENGL1_DIR)/Example.exe: $(addprefix $(OPENGL1_DIR)/, $(OPENGL1_SRC))
	$(CSC) /out:$@ $^ /pkg:tao-freeglut $(SYSTEM_LIBS) $(DRAWING_LIBS)

OPENGL2_DIR = Redbook
OPENGL2_SRC = Aaindex.cs Aapoly.cs Aargb.cs Accanti.cs Accpersp.cs Alpha3d.cs \
	      Alpha.cs Anti.cs Bezcurve.cs Bezmesh.cs Bezsurf.cs Checker.cs \
	      CheckerOld.cs Clip.cs Colormat.cs Cube.cs DepthCue.cs Dof.cs \
	      Double.cs Drawf.cs Feedback.cs Fog.cs FogIndex.cs FogIndexOld.cs \
	      FogOld.cs Font.cs Hello.cs Image.cs Jitter.cs Light.cs Lines.cs \
	      List.cs Material.cs Mipmap.cs Model.cs MoveLight.cs Nurbs.cs \
	      PickDepth.cs PickSquare.cs Plane.cs Planet.cs PolyOff.cs \
	      Polys.cs Program.cs Quadric.cs Redbook.cs Redbook.Designer.cs \
	      Robot.cs SceneBlueAmbient.cs SceneColorLight.cs Scene.cs \
	      SceneFlat.cs Select.cs Smooth.cs Stencil.cs Stroke.cs Surface.cs \
	      SurfaceOld.cs TeaAmbient.cs Teapots.cs Tess.cs TessWind.cs \
	      TexBind.cs TexGen.cs TexProx.cs TexSub.cs TextureSurf.cs \
	      Torus.cs Trim.cs UnProject.cs Varray.cs Wrap.cs
$(OPENGL2_DIR)/Example.exe: $(addprefix $(OPENGL2_DIR)/, $(OPENGL2_SRC))
	$(CSC) /out:$@ $^ /pkg:tao-freeglut $(SYSTEM_LIBS) $(DRAWING_LIBS)

OPENGL3_DIR = GeWangExamples
OPENGL3_SRC = ClippingPlanes.cs GeWangExamples.cs GeWangExamples.Designer.cs \
	      Lorenz3d.cs Mirror.cs Program.cs Shadow.cs Starfield.cs Xform.cs
$(OPENGL3_DIR)/Example.exe: $(addprefix $(OPENGL3_DIR)/, $(OPENGL3_SRC))
	$(CSC) /out:$@ $^ /pkg:tao-freeglut $(SYSTEM_LIBS) $(DRAWING_LIBS)

