# Prophecy3D - Linux
# Copyright 2001 - Edmond Cote
#

SHELL = /bin/sh

LIBNAME=libprcore.so
LIBPATH=../../../lib

I=../../../
S=../../src
ASM=nasm
CC=gcc
CXX=kg++ # egcs++ in RedHat
CFLAGS=-g -I $(I) -c

LFLAGS=-L $(X11LIB) -lX11 -lXext -lGL -lm -lXxf86vm
X11LIB=/usr/X11R6/lib

ASMSRC=../../src/x86

# linux objects
OBJS_LINUX = exception.o joystick.o keyboard.o mouse.o plugin.o\
timer.o window.o zip.o opengl.o 

# zlib objects
OBJS_ZLIB = adler32.o compress.o crc32.o deflate.o gzio.o infblock.o\
infcodes.o inffast.o inflate.o inftrees.o infutil.o trees.o uncompr.o\
zutil.o 

OBJS_FXT1=commonpb.o fximgpb.o

# pnglib objects
OBJS_PNGLIB = png.o pngerror.o pngget.o pngmem.o pngpread.o \
pngread.o pngrio.o pngrtran.o pngrutil.o pngset.o \
pngtest.o pngtrans.o pngvcrd.o pngwio.o pngwrite.o \
pngwtran.o pngwutil.o      

# core objects
OBJS_CORE = alphablend.o bitmap.o bitmapcodec_bmp.o bitmapcodec_jpg.o \
bitmapcodec_pcx.o bitmapcodec_png.o bitmapcodec_rgb.o bitmapcodec_tga.o \
blitter.o codec.o cpu.o file.o filename.o filestream.o inputdevice.o \
interface.o mipmap.o quantize.o rect.o string.o surface.o version.o \
bitmapcodec_dxtc.o memorystream.o \

# jpglib objects
OBJS_JPGLIB = jcapimin.o jcapistd.o jccoefct.o jccolor.o jcdctmgr.o jchuff.o \
jcmainct.o jcmarker.o jcmaster.o jcomapi.o jcparam.o jcphuff.o jcprepct.o \
jcsample.o jctrans.o jdapimin.o jdapistd.o jdatadst.o jdatasrc.o jdcoefct.o \
jdcolor.o jddctmgr.o jdhuff.o jdinput.o jdmainct.o jdmarker.o jdmaster.o \
jdmerge.o jdphuff.o jdpostct.o jdsample.o jdtrans.o jerror.o jfdctflt.o \
jfdctfst.o jfdctint.o jidctflt.o jidctfst.o jidctint.o jidctred.o jmemmgr.o \
jmemnobs.o jquant1.o jquant2.o jutils.o jcinit.o \

OBJS_X86 = _blitter.o _cpu.o _alphablend.o

OBJS=$(OBJS_CORE) $(OBJS_JPGLIB) $(OBJS_PNGLIB) $(OBJS_ZLIB) $(OBJS_LINUX) $(OBJS_X86)


all:$(LIBNAME)

$(LIBNAME) : $(OBJS)
	$(CC) $(LFLAGS) -shared -Wl,-soname,$(LIBNAME) -o $(LIBPATH)/$(LIBNAME) $(OBJS)



_blitter.o: $(S)/x86/_blitter.asm
	$(ASM) -f elf -d__LINUX__ $(S)/x86/_blitter.asm -o _blitter.o

_cpu.o: $(S)/x86/_cpu.asm
	$(ASM) -f elf -d__LINUX__ $(S)/x86/_cpu.asm -o _cpu.o

_alphablend.o: $(S)/x86/_alphablend.asm
	$(ASM) -f elf -d__LINUX__ $(S)/x86/_alphablend.asm -o _alphablend.o


# hacks?
%.o : ../../extlib/jpglib/%.c
	$(CC) $(CFLAGS) -o $@ $< 

%.o : ../../extlib/pnglib/%.c
	$(CC) $(CFLAGS) -o $@ $< 

%.o : ../../extlib/zlib/%.c
	$(CC) $(CFLAGS) -o $@ $<

%.o : ../../extlib/fxt1/%.c
	$(CC) $(CFLAGS) -o $@ $< 

%.o : ../../src/%.cpp
	$(CXX) $(CFLAGS) -o $@ $< 

%.o : ../../src/linux/%.cpp
	$(CXX) $(CFLAGS) -o $@ $< 

-include *.dep

dep: 
	$(CXX) $(CFLAGS) ../../src/*.cpp -M > Makefile.core.dep 
	$(CXX) $(CFLAGS) ../../src/linux/*.cpp -M > Makefile.linux.dep
	$(CC) $(CFLAGS) ../../extlib/jpglib/*.c -M > Makefile.jpglib.dep
	$(CC) $(CFLAGS) ../../extlib/zlib/*.c -M > Makefile.zlib.dep
	$(CC) $(CFLAGS) ../../extlib/fxt1/*.c -M > Makefile.fxt1.dep
	$(CC) $(CFLAGS)  ../../extlib/pnglib/*.c -M > Makefile.pnglib.dep

.PHONY : clean
clean : 
	-rm -f $(LIBPATH)/$(LIBNAME) $(OBJS) *.dep
