###########################################################################
# XAERO - Makefile
#
# This Makefile generates the executable "xaero" out of the *.c files.
# Simple type "make". But before you do this, set the definitions 
# below appropriated to your system.
#
# NOTE:
#   Requirements for successful compilation:
#     - Ansi C Compiler, p.e.: gcc (Version at least 2.3.3)
#     - X11R5
#     - Athena-Widget-Set
#     - FWF (Free Widget Foundation), tested with V3.52 
#
#   For full functionality, The "POV-raytracer" ist needed! 
#
# Date: 11/03/93, Andreas Ziegler


###########################################################################
# Set path where you want to install xaero and it's application-default
# file.

XAEROBIN  = /usr/local/X11R5/bin                # or local: $HOME/bin
XAEROAPPL = /usr/local/X11R5/lib/app-defaults   # or local: $HOME/app-defaults


###########################################################################
# Compiler and Linker definitions.
CC       = gcc       # You need an Ansi C compiler!
COPTS    = -ansi -Wall $(OPTIMIZE) 
DEBUG    =         # -g if you want some debug-information
OPTIMIZE = -O2
LD       = ld
STATIC	 = -static


###########################################################################
# 
RM   = rm -f
ECHO = echo
CP   = cp -i


###########################################################################
# Path-definitons for X11R5 and FWF

XINCLUDE = /usr/local/X11R5/include      
XLIB     = /usr/local/X11R5/lib 
#FWFINCLUDE = /usr/local/as/include 
FWFINCLUDE = ../../FWF/FWF/include
#FWFLIB     = /usr/local/as/lib.$(HOSTTYPE)
FWFLIB	= ../../FWF/FWF/lib.$(HOSTTYPE)
XPMLIB	= ../../FWF/xpm-3.2g/lib.$(HOSTTYPE)


###########################################################################
# compiler-options
CFLAGS = $(COPTS) $(DEBUG) -I$(XINCLUDE) -I$(FWFINCLUDE)


###########################################################################
# Object files for the Editor
EDITOROBJS  = Editor.o Menu.o ObjektAktionen.o Animation.o Kopier.o Kamera.o \
              HilfsRoutinen.o EinAus.o Kraft.o Material.o ZusGesObjekte.o 


###########################################################################
# Object files for the Display-part
ANZEIGEOBJS = darstellung.o animat.o autils.o rayausg.o 


###########################################################################
# Objects for the FSB-Library
FSBLIB = fsb
FSBLIBNAME = libfsb.a

FSBLIBOBJECTS = ausgabe.o fehler.o folgeschrittberechnung.o kollision.o \
		vektor.o integration.o materialien.o \
		gleichungsloeser.o bewegungsgleichungen.o \
		koerper.o kollisionsbehandlung.o rev.o io.o \
	        stoss.o beruehrung.o konfig.o kraft.o


###########################################################################
# definitions for the X11-free fsb-executable
FSBEXE = fsb
FSBOBJECTS = fsb.o bspzustaende.o 


###########################################################################
# xaero-executable generation

xaero: $(EDITOROBJS) $(ANZEIGEOBJS) $(FSBLIBNAME)
	$(CC) $(STATIC) $(DEBUG) -o xaero $(EDITOROBJS) $(ANZEIGEOBJS) \
              -L. -L$(FWFLIB) -L$(XPMLIB) -L$(XLIB) \
	      -lfwf -lXaw -lXmu -lXt -lXext -lXpm -lX11 -l$(FSBLIB) -lm 
	

###########################################################################
# example files generation (optional)

example1: example1.o $(FSBLIBNAME) 
	$(CC) -o $@ example1.o $(DEBUG) -l$(FSBLIB) -lm -L.

example2: example1.o $(FSBLIBNAME) 
	$(CC) -o $@ example1.o $(DEBUG) -l$(FSBLIB) -lm -L.


###########################################################################
# FSB-library generation

$(FSBLIBNAME): $(FSBLIBOBJECTS) 
	$(LD) -r -o $@ $(FSBLIBOBJECTS)


###########################################################################
# if you finished setting paths just type 'make install'. if you only want 
# to compile this tool type 'make all'.

copyFilesToDestination::
	$(CP) xaero $(XAEROBIN)
	$(CP) ../appl-default/XAero $(XAEROAPPL)

all::
	@make help
	@make clean
	@make xaero
	strip xaero

clean::
	@$(ECHO) "Delete *.o and $(FSBLIBNAME)"
	$(RM) *.o $(FSBLIBNAME) 

examples:: example1 example2

install::
	@make all
	@make copyFilesToDestination

help::
	@echo ""
	@echo To compile this application you have to set the following
	@echo paths-variables:
	@echo ""
	@echo "    1. XINCLUDE    (default: $(XINCLUDE))"
	@echo "    2. XLIB        (default: $(XLIB))"
	@echo "    3. FWFINCLUDE  (default: $(FWFINCLUDE))"
	@echo "    4. FWFLIB      (default: $(FWFLIB))"
	@echo "    5. XPMLIB      (default: $(XPMLIB))"
	@echo ""
	@echo "You need the FWF package (Free Widget Foundation) to compile XAERO."
	@echo "To link XAERO you also need the xpm-package (X-PixMap)."
	@echo ""




# Dependencies:

Animation.o : Animation.c Welt.h folgeschrittberechnung.h grundtypen.h zustand.h \
  koerper.h materialien.h kraft.h verbindungen.h konfig.h Kamera.h anzeigeconst.h \
  rayausg.h bitmap/firstSync.xbm bitmap/lastSync.xbm bitmap/nextSync.xbm bitmap/prevSync.xbm \
  bitmap/step.xbm bitmap/play.xbm bitmap/stop.xbm 
Editor.o : Editor.c Welt.h folgeschrittberechnung.h grundtypen.h zustand.h koerper.h \
  materialien.h kraft.h verbindungen.h konfig.h Kamera.h rayausg.h bitmap/rotXP.xbm \
  bitmap/rotXM.xbm bitmap/rotYP.xbm bitmap/rotYM.xbm bitmap/rotZP.xbm bitmap/rotZM.xbm \
  bitmap/movXP.xbm bitmap/movXM.xbm bitmap/movYP.xbm bitmap/movYM.xbm bitmap/movZP.xbm \
  bitmap/movZM.xbm 
EinAus.o : EinAus.c Welt.h folgeschrittberechnung.h grundtypen.h zustand.h koerper.h \
  materialien.h kraft.h verbindungen.h konfig.h Kamera.h io.h 
HilfsRoutinen.o : HilfsRoutinen.c Welt.h folgeschrittberechnung.h grundtypen.h \
  zustand.h koerper.h materialien.h kraft.h verbindungen.h konfig.h Kamera.h 
Kamera.o : Kamera.c Welt.h folgeschrittberechnung.h grundtypen.h zustand.h koerper.h \
  materialien.h kraft.h verbindungen.h konfig.h Kamera.h 
Kopier.o : Kopier.c Welt.h folgeschrittberechnung.h grundtypen.h zustand.h koerper.h \
  materialien.h kraft.h verbindungen.h konfig.h Kamera.h 
Kraft.o : Kraft.c Welt.h folgeschrittberechnung.h grundtypen.h zustand.h koerper.h \
  materialien.h kraft.h verbindungen.h konfig.h Kamera.h vektor.h 
Material.o : Material.c Welt.h folgeschrittberechnung.h grundtypen.h zustand.h \
  koerper.h materialien.h kraft.h verbindungen.h konfig.h Kamera.h 
Menu.o : Menu.c Welt.h folgeschrittberechnung.h grundtypen.h zustand.h koerper.h \
  materialien.h kraft.h verbindungen.h konfig.h Kamera.h anzeigeconst.h HelpAboutAERO 
ObjektAktionen.o : ObjektAktionen.c Welt.h folgeschrittberechnung.h grundtypen.h \
  zustand.h koerper.h materialien.h kraft.h verbindungen.h konfig.h Kamera.h vektor.h \
  anzeigeconst.h 
ZusGesObjekte.o : ZusGesObjekte.c Welt.h folgeschrittberechnung.h grundtypen.h \
  zustand.h koerper.h materialien.h kraft.h verbindungen.h konfig.h Kamera.h 
animat.o : animat.c animat.h visualisierung.h grundtypen.h koerper.h materialien.h \
  kraft.h verbindungen.h zustand.h anzeigeconst.h autils.h Kamera.h 
ausgabe.o : ausgabe.c zustand.h grundtypen.h koerper.h materialien.h kraft.h \
  verbindungen.h kollision.h folgeschrittberechnung.h konfig.h 
autils.o : autils.c visualisierung.h grundtypen.h koerper.h materialien.h kraft.h \
  verbindungen.h zustand.h anzeigeconst.h 
beruehrung.o : beruehrung.c koerper.h grundtypen.h materialien.h kraft.h fehler.h \
  vektor.h beruehrung.h kollision.h folgeschrittberechnung.h zustand.h verbindungen.h \
  konfig.h gleichungsloeser.h 
bewegungsgleichungen.o : bewegungsgleichungen.c grundtypen.h vektor.h folgeschrittberechnung.h \
  zustand.h koerper.h materialien.h kraft.h verbindungen.h konfig.h kollision.h \
  bewegungsgleichungen.h 
darstellung.o : darstellung.c darstellung.h visualisierung.h grundtypen.h koerper.h \
  materialien.h kraft.h verbindungen.h zustand.h anzeigeconst.h autils.h 
example1.o : example1.c folgeschrittberechnung.h grundtypen.h zustand.h koerper.h \
  materialien.h kraft.h verbindungen.h konfig.h 
example2.o : example2.c folgeschrittberechnung.h grundtypen.h zustand.h koerper.h \
  materialien.h kraft.h verbindungen.h konfig.h 
federcode.o : federcode.c 
fehler.o : fehler.c 
folgeschrittberechnung.o : folgeschrittberechnung.c grundtypen.h vektor.h folgeschrittberechnung.h \
  zustand.h koerper.h materialien.h kraft.h verbindungen.h konfig.h integration.h \
  bewegungsgleichungen.h kollisionsbehandlung.h 
gleichungsloeser.o : gleichungsloeser.c fehler.h grundtypen.h gleichungsloeser.h 
integration.o : integration.c grundtypen.h fehler.h integration.h 
io.o : io.c io.h zustand.h grundtypen.h koerper.h materialien.h kraft.h verbindungen.h \
  konfig.h vektor.h 
koerper.o : koerper.c koerper.h grundtypen.h materialien.h kraft.h vektor.h 
kollision.o : kollision.c koerper.h grundtypen.h materialien.h kraft.h fehler.h \
  kollision.h folgeschrittberechnung.h zustand.h verbindungen.h konfig.h integration.h \
  gleichungsloeser.h vektor.h ausgabe.h 
kollisionsbehandlung.o : kollisionsbehandlung.c kollisionsbehandlung.h zustand.h \
  grundtypen.h koerper.h materialien.h kraft.h verbindungen.h kollision.h folgeschrittberechnung.h \
  konfig.h vektor.h fehler.h beruehrung.h stoss.h 
konfig.o : konfig.c konfig.h grundtypen.h 
kraft.o : kraft.c kraft.h grundtypen.h koerper.h materialien.h vektor.h 
materialien.o : materialien.c materialien.h grundtypen.h 
mymaterial.o : mymaterial.c materialien.h grundtypen.h 
rayausg.o : rayausg.c rayausg.h autils.h visualisierung.h grundtypen.h koerper.h \
  materialien.h kraft.h verbindungen.h zustand.h anzeigeconst.h Kamera.h 
rev.o : rev.c 
stoss.o : stoss.c stoss.h kollision.h folgeschrittberechnung.h grundtypen.h \
  zustand.h koerper.h materialien.h kraft.h verbindungen.h konfig.h gleichungsloeser.h \
  vektor.h 
vektor.o : vektor.c vektor.h grundtypen.h 
