CC = gcc
CXX = g++
LD = g++
STRIP = strip

INCLUDES = \
-I../mogltk/include \
-I../Baltisot/include \
-I../Baltisot/lib/zlib/include \
-I../Baltisot/lib/lua/include -I../Baltisot/lib/lua/includes \
-I../lua-modules/src \
\
-I ../Mesa-7.0.3/include \
-I ../tinyxml \
-I /usr/include/mysql \
-I /usr/include/FTGL -I /usr/include/freetype2 \
-I /usr/include/oracle/11.1.0.1/client/

HAVES = -DHAVE_VSSCANF -DHAVE_LIBJPEG -DHAVE_FCNTL -DHAVE_MYSQL -DHAVE_UNISTD_H -DHAVE_FORK -DHAVE_PIPE -DHAVE_FSYNC -DHAVE_MALLOC_H -DHAVE_ASPRINTF -DHAVE_BYTESWAP_H

CPPFLAGS += $(INCLUDES) -g -DSTDC_HEADERS -DREADLINE_STATIC -DHOOK_STDS -fexceptions -DWORDS_LITTLEENDIAN -fexceptions -march=i686 $(HAVES) -DUSE_MPQLIB

LDFLAGS += -u gluNewTess -rdynamic -g -fexception -lpthread -lSegFault /usr/lib/libreadline.a /usr/lib/libncurses.a -lz -ldl -L/usr/lib/oracle/11.1.0.1/client/lib -Wl,--whole-archive ../Mesa-7.0.3/lib/libGLU.a ../Mesa-7.0.3/lib/libOSMesa.a -Wl,--no-whole-archive

vpath %.c ../Baltisot/lib:../Baltisot/src:../Baltisot/lib/zlib/src:../Baltisot/lib/lua/src:../Baltisot/lib/lua/src/LuaLib:src:../paperIdol/src:../mogltk/lib:../tinyxml:../lua-modules/src
vpath %.cc ../Baltisot/lib:../Baltisot/src:../Baltisot/lib/zlib/src:../Baltisot/lib/lua/src:../Baltisot/lib/lua/src/LuaLib:src:../paperIdol/src:../mogltk/lib:../tinyxml:../lua-modules/src
vpath %.cpp ../Baltisot/lib:../Baltisot/src:../Baltisot/lib/zlib/src:../Baltisot/lib/lua/src:../Baltisot/lib/lua/src/LuaLib:src:../paperIdol/src:../mogltk/lib:../tinyxml:../lua-modules/src
vpath %.lua ../Baltisot/lib:../Baltisot/src

LUAINTERFACE_SOURCES = \
lua-interface.cc \
lua-plugin.cc \

BALTISOT_SOURCES = \
Main.cc \
\
RandISAAC.cc \
Exceptions.cc \
String.cc \
Regex.cc \
\
Base64.cc \
\
Handle.cc \
Input.cc \
InPipe.cc \
Output.cc \
Buffer.cc \
\
ConfigFile.cc \
\
Socket.cc \
\
Task.cc \
TaskMan.cc \
ChainTasks.cc \
CopyJob.cc \
ReadJob.cc \
HttpServ.cc \
Action.cc \
Domain.cc \
HtmlSkinner.cc \
Variables.cc \
Message.cc \
Form.cc \
SocketClient.cc \
HttpClient.cc \
MailClient.cc \
HashFunction.cc \
\
BLua.cc \
LuaTask.cc \
LuaHandle.cc \
LuaCommandLine.cc \
\
fileutils.cc \
generic.cc \
checkargs.c \
datecalc.c \
\
hashtab.c \
recycle.c \
lookupa.c \
\
md5.c \
sha1.c \
sha256.c \

LUA_SOURCES = \
lapi.c \
lcode.c \
ldebug.c \
ldo.c \
ldump.c \
lfunc.c \
lgc.c \
llex.c \
lmem.c \
lobject.c \
lopcodes.c \
lparser.c \
lstate.c \
lstring.c \
ltable.c \
ltests.c \
ltm.c \
luacomp.c \
lundump.c \
lvm.c \
lzio.c \
lprint.c \
\
linit.c \
lauxlib.c \
loadlib.c \
lbaselib.c \
ldblib.c \
ldirlib.c \
liolib.c \
loslib.c \
lmathlib.c \
lstrlib.c \
ltablib.c \

LUAC_SOURCES = \
luac.cc \
\
Main.cc \
Exceptions.cc \
String.cc \
\
Handle.cc \
Input.cc \
Output.cc \
Buffer.cc \
\
BLua.cc \
\
fileutils.cc \
generic.cc \
checkargs.c \
datecalc.c \

DEBUG_MODULES = \
tinystr.cpp \
tinyxml.cpp \
tinyxmlerror.cpp \
tinyxmlparser.cpp \
plugin-luaconfigfiles.cc \
LuaConfigFile.cc \
plugin-luaxml.cc \
LuaXML.cc \
plugin-luaocci.cc \
LuaOCCI.cc \
plugin-luahandle.cc \
plugin-luahttp.cc \
LuaHttp.cc \
plugin-luaregex.cc \
LuaRegex.cc \
plugin-luatask.cc \
plugin-luasql.cc \
SQL.cc \
LuaSQL.cc \
plugin-lualibs.cc \
loadlualibs.cc \
plugin-luagl.cc \
LuaGL.cc \
plugin-luaftgl.cc \
LuaFTGL.cc \
supportlib.lua \
tasklib.lua \
ajaxlib.lua \
htmllib.lua \
xmllib.lua \
httplib.lua \
plugin-luaosmesa.cc \
dds.c

WHOLE_SOURCES = $(BALTISOT_SOURCES) $(LUA_SOURCES) $(LUAINTERFACE_SOURCES)
DEBUG_SOURCES = $(DEBUG_MODULES)

LUAINTERFACE_OBJECTS = $(addsuffix .o, $(notdir $(basename $(LUAINTERFACE_SOURCES))))
LUAC_OBJECTS = $(addsuffix .o, $(notdir $(basename $(LUAC_SOURCES) $(LUA_SOURCES))))
DEBUG_OBJECTS = $(addsuffix .o, $(notdir $(basename $(DEBUG_SOURCES))))

ALL_OBJECTS = $(addsuffix .o, $(notdir $(basename $(WHOLE_SOURCES))))
ALL_DEPS = $(addsuffix .dep, $(notdir $(basename $(WHOLE_SOURCES) $(DEBUG_SOURCES))))

all: dep luac lua-interface

dep: $(ALL_DEPS)

luac: $(LUAC_OBJECTS)
	$(LD) -o luac $(LUAC_OBJECTS) $(LDFLAGS)

lua-interface: $(ALL_OBJECTS)
	$(LD) -o lua-interface $(ALL_OBJECTS) $(LDFLAGS)

lua-interface-dbg: $(ALL_OBJECTS) $(DEBUG_OBJECTS)
	$(LD) -o lua-interface-dbg $(ALL_OBJECTS) $(DEBUG_OBJECTS) $(LDFLAGS) -lfreetype -lftgl ../Mesa-7.0.3/lib/libGLU.a ../Mesa-7.0.3/lib/libOSMesa.a /usr/lib/libmysqlclient.a -locci -lclntsh `Magick++-config --libs`

clean:
	rm -f lua-interface luac *.o *.dep

%.dep : %.c
	$(CC) $(CPPFLAGS) -M -MF $@ $<

%.dep : %.cpp
	$(CXX) $(CPPFLAGS) -M -MF $@ $<

%.dep : %.cc
	$(CXX) $(CPPFLAGS) -M -MF $@ $<

%.c : %.clua
	bin2c $< $@ $(basename $@)

%.clua : %.lua
	./luac -o $@ $<

-include $(ALL_DEPS)