CPP=		background.cpp camera.cpp camerapath.cpp cube.cpp \
		flash.cpp font.cpp main.cpp object.cpp \
		sphere.cpp sprite.cpp star.cpp tga.cpp \
		anfang.cpp last.cpp scroller.cpp space2.cpp starfield.cpp \
		swoosh.cpp title.cpp rotor.cpp \
		doj/color.cpp doj/memorymap.cpp

DATA=		ariblk.ttf \
		rp-dawnv.xm \
		anfang.pth space2.pth space2.sav swoosh.pth \
		scrolltext.txt \
		texture/clouds2048.tga \
		texture/earth2048.tga \
		texture/moon256.tga \
		texture/ryg512.tga \
		texture/stars256.tga \
		texture/sunflare256.tga \
		texture/whirl1024.tga

DOJDEBUG=	0
MUSIC=		1

###############################################################################

CXXFLAGS+=	-DMUSIC=$(MUSIC)

OBJ=		$(CPP:%.cpp=%.obj)
DOBJ=		$(DATA:%=%.dobj)

ifeq ($(MUSIC), 1)
CPP+=		osc.cpp
endif

ifeq ($(DOJDEBUG), 1)
CXXFLAGS+=	-DDOJDEBUG=1
else
CXXFLAGS+=	-DNDEBUG=1
endif

##################################### Linux
ifdef TERM

ifdef ICC
CXX=		icc
CXXFLAGS+=	-I/usr/local/include -Idoj -wd858,1125
LDFLAGS+=	-i_dynamic
else

#CXX=		g++
CXXFLAGS+=	-Wall -Istuff -Idoj
CXXFLAGS+=	-O3 -ffast-math -fomit-frame-pointer
#CXXFLAGS+=	-march=pentium-mmx
#CXXFLAGS+=	-march=pentium-mmx -mmmx
#CXXFLAGS+=	-march=pentium2 -mmmx -mtune=pentium2
#CXXFLAGS+=	-march=pentium3 -msse  #-mfpmath=sse
CXXFLAGS+=	-march=pentium4 -msse2 #-mfpmath=sse
endif

ifdef MESADIR
LDFLAGS+=	-L$(MESADIR)/lib
endif

EXE=		nix
LIBS+=		-lglut -lGLU -lGL \
		-lfmod-3.75 \
		`freetype-config --libs` \
		-lXmu -lXi -lXext -lX11 \
		-lm
LDFLAGS+=	-Lstuff -L/usr/X11R6/lib
CXXFLAGS+=	-c `freetype-config --cflags` -I/usr/X11R6/include -I/usr/local/boost
LDFLAGS+=	-o $(EXE)
LINK=		$(CXX)
DATE=		`date +%Y%m%d%H%M`
ASMFLAGS+=	-f elf
ASMPREFIX=

###################################### Win VC
else

EXE=		nix.exe
CXX=		cl
CXXFLAGS+=	/nologo /c /GX /Idoj /Istuff
CXXFLAGS+=	/O2 /G5
CXXFLAGS+=	/Zi
LDFLAGS=	/OUT:$(EXE) /LIBPATH:stuff
#LDFLAGS+=	/SUBSYSTEM:CONSOLE /DEBUG
LDFLAGS+=	/SUBSYSTEM:WINDOWS
LIBS=		user32.lib glut32.lib glu32.lib opengl32.lib freetype.lib fmodvc.lib
export RM=	-del
LINK=		link
ASMFLAGS+=	-f win32
ASMPREFIX=	_
OBJ+=		nix.res

endif
#########################################

.PHONY:		all clean compress data-clean dep backup tags docs doc-clean

all:	$(EXE)
	if [ ! -f Makefile.dep ]; then $(MAKE) dep; fi

compress:	$(EXE)
	upx -9 $<

$(EXE):		$(DOBJ) $(OBJ)
	$(LINK) $(LDFLAGS) $^ $(LIBS)

clean:	
	$(RM) $(EXE)
	$(RM) TAGS
	$(RM) *~
	$(RM) *.obj
	$(RM) *.o
	$(RM) *.asm
	$(RM) *.res
	$(RM) core
	$(RM) scrolltext.txt
	$(RM) perl.lck
	$(RM) vc60.pdb
	$(MAKE) -C doj $@
	$(MAKE) -C texture $@
	$(MAKE) -C stuff $@
	$(MAKE) doc-clean
	$(MAKE) data-clean

data-clean:
	$(RM) *.dobj
	$(RM) data.h
	$(MAKE) -C texture $@

dep:	
	$(CXX) -E -M $(CXXFLAGS) $(CPP) > Makefile.dep

backup:	
	tar cfz ../pop$(DATE).tar.gz *

tags:	
	etags *.cpp *.h

docs:	
	doxygen Doxyfile

doc-clean:	
	$(RM) html latex

%.obj:		%.cpp
	$(CXX) $(CXXFLAGS) -o $@ $<

%.dobj:		%
	perl dobj.pl $< $(ASMPREFIX)
	nasm $(ASMFLAGS) -o $@ $<.asm
ifdef TERM
	$(RM) $<.asm
endif

scrolltext.txt:	
	perl scrolltext.pl > $@

nix.res:	nix.rc
	rc $<

nix.rc:		nix.ico nixsmall.ico

-include Makefile.dep
