#----------------------------------------------------------------
# OBLIGE
#----------------------------------------------------------------
#
# GNU Makefile for Unix/Linux version (local files)
#
# This makefile creates an executable which excepts the script
# and data files in the same directory as itself, which mirrors
# how programs under Windows often work.  Use 'Makefile.unixy'
# if you want the more traditional kind of installation.
#
# NOTE: the Lua library must be compiled as C++
#
# NOTE 2: FLTK is statically linked in this version
#

PROGRAM=./Oblige

CXX=g++

LIB_LOC=./linux_lib

FLTK_DIR=$(LIB_LOC)/fltk-1.1.10
LUA_DIR=$(LIB_LOC)/lua-5.1.4
GLBSP_DIR=$(LIB_LOC)/glbsp-2.27-source

OPTIMISE=-O2 -g

# operating system choices: UNIX WIN32
OS=UNIX


#--- Internal stuff from here -----------------------------------

FLTK_FLAGS=-I$(FLTK_DIR)
FLTK_LIBS=$(FLTK_DIR)/lib/libfltk_images.a \
          $(FLTK_DIR)/lib/libfltk.a \
          -lX11 -lXext -lpng -ljpeg

LUA_FLAGS=-I$(LUA_DIR)/src -I/usr/include/lua5.1
LUA_LIBS=$(LUA_DIR)/src/liblua.a

GLBSP_FLAGS=-I$(GLBSP_DIR)/src
GLBSP_LIBS=$(GLBSP_DIR)/libglbsp.a

CXXFLAGS=$(OPTIMISE) -Wall -D$(OS) \
         $(FLTK_FLAGS) $(LUA_FLAGS) $(GLBSP_FLAGS)
LDFLAGS=-L/usr/X11R6/lib
LIBS=-lm -lz $(FLTK_LIBS) $(LUA_LIBS) $(GLBSP_LIBS)

OBJS=	./gui/main.o      \
	./gui/lib_argv.o  \
	./gui/lib_file.o  \
	./gui/lib_signal.o \
	./gui/lib_util.o  \
	./gui/lib_pak.o   \
	./gui/lib_wad.o   \
	./gui/sys_assert.o \
	./gui/sys_debug.o \
	./gui/csg_main.o  \
	./gui/csg_poly.o  \
	./gui/g_cookie.o  \
	./gui/g_lua.o     \
	./gui/img_bolt.o  \
	./gui/img_pill.o  \
	./gui/img_carve.o \
	./gui/img_relief.o \
	./gui/img_font1.o  \
	./gui/csg_doom.o  \
	./gui/csg_quake.o \
	./gui/dm_extra.o  \
	./gui/dm_glbsp.o  \
	./gui/dm_wad.o    \
	./gui/nk_art.o    \
	./gui/nk_level.o  \
	./gui/q1_clip.o   \
	./gui/q1_doors.o  \
	./gui/q1_main.o   \
	./gui/q_bsp.o     \
	./gui/vis_buffer.o \
	./gui/wolf_map.o  \
	./gui/twister.o   \
	./gui/tx_forge.o  \
	./gui/tx_skies.o  \
	./gui/ui_about.o  \
	./gui/ui_build.o  \
	./gui/ui_chooser.o \
	./gui/ui_dialog.o \
	./gui/ui_game.o   \
	./gui/ui_level.o  \
	./gui/ui_map.o    \
	./gui/ui_module.o \
	./gui/ui_rchoice.o \
	./gui/ui_play.o   \
	./gui/ui_window.o

RM = rm -rf
CP = cp -r
MD = mkdir -p
DESTDIR =
ICON = oblige-64.png
DESKTOP = oblige.desktop
DATA = data doc engines games mods scripts GPL.txt README.txt CHANGES.txt TODO.txt WISHLIST.txt
STUFFDIR = ./stuff
BINDIR = $(DESTDIR)/opt/oblige
ICNDIR = $(DESTDIR)/usr/share/pixmaps
APPDIR = $(DESTDIR)/usr/share/applications/hildon


#--- Targets and Rules ------------------------------------------

all: $(PROGRAM)

clean:
	rm -f $(PROGRAM) ./gui/*.o ./gui/core ./gui/core.*
	rm -f ./gui/ERRS ./gui/update.log

$(PROGRAM): $(OBJS)
	$(CXX) $(CFLAGS) $(OBJS) -o $@ $(LDFLAGS) $(LIBS)
	strip --strip-unneeded $(PROGRAM)

install: all
	@$(MD) "$(BINDIR)"
	@$(CP) "$(PROGRAM)" $(DATA) "$(BINDIR)"
	@$(MD) "$(ICNDIR)"
	@$(CP) "$(STUFFDIR)/$(ICON)" "$(ICNDIR)"
	@$(MD) "$(APPDIR)"
	@$(CP) "$(STUFFDIR)/$(DESKTOP)" "$(APPDIR)"

uninstall:
	@$(RM) "$(BINDIR)"
	@$(RM) "$(ICNDIR)/$(ICON)" "$(APPDIR)/$(DESKTOP)"

.PHONY: all clean bin

#--- editor settings ------------
# vi:ts=8:sw=8:noexpandtab
