CC = gcc
PROGRAM = manic
CPU = i386
#CPU = i386 if you want to compile for any 80x86 machine.

all: $(PROGRAM)

#Choose your OS, sound libs and gfx libs here:

#SYSTEM = MSDOS
SYSTEM = LINUX

GFXLIB = ALLEGRO
#GFXLIB = SVGALIB
#GFXLIB = LIBGGI

#SNDLIB = MIDAS
SNDLIB = MIKMOD
#SNDLIB = NONE

include Makefile.dep


DATA_OBJ = miscdata/end.o miscdata/misc.o


GAME_OBJ = manic.o main.o core.o game.o demo.o graph.o loading.o titles.o \
           cmdline.o version.o


LINUX_CFLAGS =
LINUX_LIBS =
LINUX_OBJ = systems/linux/init.o

MSDOS_CFLAGS =
MSDOS_LIBS =
MSDOS_OBJ = systems/msdos/init.o

MSDOS_ALLEGRO_CFLAGS =
LINUX_ALLEGRO_CFLAGS = `allegro-config --cflags`
ALLEGRO_CFLAGS = $($(SYSTEM)_ALLEGRO_CFLAGS)
MSDOS_ALLEGRO_LIBS = -lalleg
LINUX_ALLEGRO_LIBS = -L/usr/local/lib -lalleg-3.9.33 -lalleg_unsharable -L/usr/X11R6/lib -lm -lXxf86dga -lXxf86vm -lXext -lX11
ALLEGRO_LIBS = $($(SYSTEM)_ALLEGRO_LIBS)
ALLEGRO_OBJ = gfxlibs/allegro/gfx.o gfxlibs/allegro/init.o \
              gfxlibs/allegro/shutdown.o gfxlibs/allegro/keyboard.o

SVGALIB_CFLAGS =
#-DWAITVR
LINUX_SVGALIB_LIBS = -lvgagl -lvga
SVGALIB_LIBS = $($(SYSTEM)_SVGALIB_LIBS)
SVGALIB_OBJ = gfxlibs/svgalib/gfx.o gfxlibs/svgalib/init.o \
              gfxlibs/svgalib/shutdown.o gfxlibs/svgalib/keyboard.o

LIBGGI_CFLAGS =
LINUX_LIBGGI_LIBS = -lggi
LIBGGI_LIBS = $($(SYSTEM)_LIBGGI_LIBS)
LIBGGI_OBJ = gfxlibs/libggi/gfx.o gfxlibs/libggi/init.o \
             gfxlibs/libggi/shutdown.o gfxlibs/libggi/keyboard.o


MIDAS_CFLAGS =
LINUX_MIDAS_LIBS = -lpthread sndlibs/midas/midaslin.a
MSDOS_MIDAS_LIBS = sndlibs/midas/midasdos.a
MIDAS_LIBS = $($(SYSTEM)_MIDAS_LIBS)
MIDAS_OBJ = sndlibs/midas/snd.o sndlibs/midas/init.o \
            sndlibs/midas/shutdown.o

MIKMOD_CFLAGS = `libmikmod-config --cflags`
MIKMOD_LIBS = `libmikmod-config --libs`
MIKMOD_OBJ = sndlibs/mikmod/snd.o sndlibs/mikmod/init.o \
             sndlibs/mikmod/shutdown.o

NONE_CFLAGS =
NONE_LIBS =
NONE_OBJ = sndlibs/none/none.o


EXTRA_OBJ = $($(SYSTEM)_OBJ) $($(GFXLIB)_OBJ) $($(SNDLIB)_OBJ)
EXTRA_LIBS = $($(SYSTEM)_LIBS) $($(GFXLIB)_LIBS) $($(SNDLIB)_LIBS)
EXTRA_CFLAGS = $($(SYSTEM)_CFLAGS) $($(GFXLIB)_CFLAGS) $($(SNDLIB)_CFLAGS)


OBJ = $(DATA_OBJ) $(EXTRA_OBJ) $(GAME_OBJ)
LIBS = $(EXTRA_LIBS)
CFLAGS = -Wall -O3 -mcpu=$(CPU) -fomit-frame-pointer $(EXTRA_CFLAGS) \
         -D$(SYSTEM) -D$(GFXLIB) -D$(SNDLIB)

$(PROGRAM): $(OBJ) Makefile.dep
	$(CC) $(CFLAGS) $(OBJ) $(LIBS) -o $(PROGRAM)

clean:
	find -mount -type f -name "*.o" -exec rm {} \;
	if [ -f $(PROGRAM) ] ; then rm $(PROGRAM) ; fi
	if [ -f $(PROGRAM).exe ] ; then rm $(PROGRAM).exe ; fi
	if [ -f core ] ; then rm core ; fi
	if [ -f Makefile.dep ] ; then rm Makefile.dep ; fi

Makefile.dep: $(OBJ:.o=.c)
	$(CC) $(CFLAGS) -M $(OBJ:.o=.c) | sed -e '/^.*: / s/^\(.*: \)\(.*\/\)\(.*\.c \)/\2\1\2\3/' > Makefile.dep

rmback:
	find -mount -type f -name "*~" -exec rm {} \;

touch:
	find -mount -type f -name "*.[ch]" -exec touch {} \;

own:
	chown $(USER).$(USER) * -R
