# why not autoconf/automake here?
# i love simplicity
# i'm still looking for a simple person loving me!

CC = gcc
CPP = g++
INSTALL = install -c
PREFIX = /usr/local
DATADIR = $(PREFIX)/share/transhackmeeting

# very shamanic lubrifications
#CFLAGS  = -Wall -O1 -ffast-math -fno-inline -fmove-all-movables \
#          -fno-loop-optimize -fexpensive-optimizations -fpeephole2 -fshort-double \
#          -DDATADIR=\"$(DATADIR)\"
#SOPT = -R .comment -R .note -R .note.ABI-tag -R .fini -R .gnu.version

#debug flags
#CFLAGS = -pipe -ggdb \
#         -DDATADIR=\"$(DATADIR)\"

#optimized flags
CFLAGS = -pipe -Wall -O2 -ffast-math -fomit-frame-pointer \
         -DDATADIR=\"$(DATADIR)\"



INCLUDE = -I. `sdl-config --cflags` \
          `pkg-config --cflags freetype2 libpng12` \
          `libmikmod-config --cflags`

LIBS = `sdl-config --libs` \
       `pkg-config --libs freetype2 libpng12` \
       `libmikmod-config --libs`

OBJS = context.o thk.o gen_layer.o scroll_layer.o impl_layers.o \
       jsync.o jutils.o layer.o linklist.o osd.o plugger.o plugin.o \
       png_layer.o screen.o sdl_blit.o sdl_screen.o \
       fastmemcpy.o cpu_accel.o

all: thk vertigo.so

thk: $(OBJS)
	$(CPP) -o thk $(OBJS) $(LIBS)
#	strip $(SOPT) thk

vertigo.so: vertigo.o
	ld -E -z now -shared vertigo.o -o vertigo.so

%.o: %.cpp
	$(CPP) $(INCLUDE) $(CFLAGS) -c -o $@ $<

%.o: %.c
	$(CC) $(INCLUDE) $(CFLAGS) -c -o $@ $<

install: all
	$(INSTALL) -s thk $(PREFIX)/bin
	$(INSTALL) data/* $(DATADIR)

clean:
	rm -f thk *.o *.so
