# DOS/DJGPP Mesa Utility Toolkit
# Version:  1.0
#
# Copyright (C) 2005  Daniel Borca   All Rights Reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
# DANIEL BORCA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


#
#  Available options:
#
#    Environment variables:
#	CFLAGS
#
#	GLIDE		path to Glide3 SDK; used to resolve DXEs.
#			default = $(TOP)/glide3
#
#    Targets:
#	all:		build GLUT
#	clean:		remove object files
#



.PHONY: all clean

TOP = ../../..
GLIDE ?= $(TOP)/glide3
LIBDIR = $(TOP)/lib
GLUT_LIB = libglut.a
GLUT_DXE = glut.dxe
GLUT_IMP = libiglut.a

export LD_LIBRARY_PATH := $(LD_LIBRARY_PATH);$(LIBDIR);$(GLIDE)/lib

CC = gcc
CFLAGS += -I$(TOP)/include -I. -IPC_HW
CFLAGS += -DGLUT_IMPORT_LIB

AR = ar
ARFLAGS = crus

HAVEDXE3 = $(wildcard $(DJDIR)/bin/dxe3gen.exe)

ifeq ($(wildcard $(addsuffix /rm.exe,$(subst ;, ,$(PATH)))),)
UNLINK = del $(subst /,\,$(1))
else
UNLINK = $(RM) $(1)
endif

CORE_SOURCES = \
	loop.c \
	callback.c \
	color.c \
	extens.c \
	init.c \
	menu.c \
	mouse.c \
	overlay.c \
	state.c \
	util.c \
	window.c \
	f8x13.c \
	f9x15.c \
	hel10.c \
	hel12.c \
	hel18.c \
	tr10.c \
	tr24.c \
	mroman.c \
	roman.c \
	bitmap.c \
	stroke.c \
	teapot.c \
	shapes.c

PC_HW_SOURCES = \
	PC_HW/pc_hw.c \
	PC_HW/pc_keyb.c \
	PC_HW/pc_mouse.c \
	PC_HW/pc_timer.c \
	PC_HW/pc_irq.S

SOURCES = $(CORE_SOURCES) $(PC_HW_SOURCES)

OBJECTS = $(addsuffix .o,$(basename $(SOURCES)))

.c.o:
	$(CC) -o $@ $(CFLAGS) -c $<
.S.o:
	$(CC) -o $@ $(CFLAGS) -c $<
.s.o:
	$(CC) -o $@ $(CFLAGS) -x assembler-with-cpp -c $<

all: $(LIBDIR)/$(GLUT_LIB) $(LIBDIR)/$(GLUT_DXE) $(LIBDIR)/$(GLUT_IMP)

$(LIBDIR)/$(GLUT_LIB): $(OBJECTS)
	$(AR) $(ARFLAGS) $@ $^

$(LIBDIR)/$(GLUT_DXE) $(LIBDIR)/$(GLUT_IMP): $(OBJECTS)
ifeq ($(HAVEDXE3),)
	$(warning Missing DXE3 package... Skipping $(GLUT_DXE))
else
	-dxe3gen -o $(LIBDIR)/$(GLUT_DXE) -Y $(LIBDIR)/$(GLUT_IMP) -D "MesaGLUT DJGPP" -E _glut -P gl.dxe -U $^
endif

clean:
	-$(call UNLINK,*.o)
	-$(call UNLINK,PC_HW/*.o)

-include depend
