# This MUST be processed by GNU make
#
# Glitch64 Makefile
# Version:  1.0
#
# this is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# this is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU Make; see the file COPYING.  If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
#

#
#  Available options:
#
#    Environment variables:
#	DEBUG=1		enable debugging checks and messages
#			default = no
#
#    Environment variables:
#
#    Targets:
#	all:		build dynamic module
#	clean:		remove object files
#	realclean:	remove all generated files
#
#
#  Requirements:
#
#    Compiler:
#       GCC 4.2
#
#    Libraries:
#       SDL 1.2 (http://www.libsdl.org)
#

.PHONY: all clean realclean

OS=$(shell uname)
ifeq ($(findstring MINGW,$(OS)),MINGW)
OS := WINDOWS
endif
ifeq ($(findstring CYGWIN,$(OS)),CYGWIN)
OS=WINDOWS
endif
ifeq ($(findstring WINNT,$(OS)),WINNT)
OS=WINDOWS
endif
ifeq ($(OS),Darwin)
OS=MACOSX
endif

ifeq ($(OS), WINDOWS)
  DLLNAME = glide3x.dll
else
  ifeq ($(OS), MACOSX)
    DLLNAME = glide3x.dylib
  else
    DLLNAME = glide3x.so
  endif
endif

EXT_INC = ./inc
EXT_LIB = ./lib

CC = g++ 
STRIP = strip
CFLAGS = -DBUILDING_DLL=1  -fexceptions

ifeq ($(OS), Linux)
LDFLAGS = -shared -lstdc++ 
CFLAGS += -D__unix__
endif
ifeq ($(OS), MACOSX)
LDFLAGS = -dynamiclib -lstdc++ 
CFLAGS += -D__unix__ -Dmacintosh
endif
ifeq ($(OS), WINDOWS)
LDFLAGS = -shared -mwindows 
CFLAGS += -D__WIN32__ -DWIN32 -D_WIN32
endif

CFLAGS += -ffast-math -funroll-loops
CFLAGS += -I. -I$(EXT_INC) `sdl-config --cflags`

ifdef DEBUG
CFLAGS += -g -DDEBUG
endif

LD = g++
LDFLAGS2 = --out-implib=libglide3x.a

LDLIBS = -L"." -L"lib" `sdl-config --libs`
ifeq ($(OS), MACOSX)
LDLIBS += -framework OpenGL -framework GLUT
endif

RM = rm

SOURCES = \
  combiner.cpp \
  geometry.cpp \
  main.cpp     \
  textures.cpp \
  vram.cpp

OBJECTS = $(SOURCES:.cpp=.o)

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

all: $(DLLNAME)

$(DLLNAME): $(OBJECTS)
	$(LD) -o $@ $(LDFLAGS) $^ $(LDLIBS) --out-implib=libglide3x.a
ifeq ($(OS), Linux)
	$(STRIP) $@
endif

clean:
	-$(RM) *.o

realclean: clean
	-$(RM) $(DLLNAME) 

-include depend
