# Makefile for Win32
#
#  NOTE: the install target may overwrite important files in the system dirs
#  Check first, before making the install target.
#
#  This builds both the osmesa and Windows drivers.
#

!include <win32.mak>

TOP = ..
SUBDIRS = osmesa.dir

CORE_SRCS = \
	api_loopback.c \
	api_noop.c \
	api_validate.c \
	accum.c \
	arbprogram.c \
	attrib.c \
	blend.c \
	bufferobj.c \
	buffers.c \
	clip.c \
	colortab.c \
	context.c \
	convolve.c \
	debug.c \
	depth.c \
	dispatch.c \
	dlist.c \
	drawpix.c \
	enable.c \
	enums.c \
	eval.c \
	extensions.c \
	feedback.c \
	fog.c \
	get.c \
	glapi.c \
	glthread.c \
	hash.c \
	hint.c \
	histogram.c \
	image.c \
	imports.c \
	light.c \
	lines.c \
	matrix.c \
	nvprogram.c \
	nvfragparse.c \
	nvvertexec.c \
	nvvertparse.c \
	pixel.c \
	points.c \
	polygon.c \
	rastpos.c \
	state.c \
	stencil.c \
	texcompress.c \
	texcompress_fxt1.c \
	texcompress_s3tc.c \
	teximage.c \
	texformat.c \
	texobj.c \
	texstate.c \
	texstore.c \
	varray.c \
	vtxfmt.c \
#	X86\x86.c \
#	X86\common_x86.c \
#	X86\3dnow.c \
#	X86\sse.c \
	math\m_debug_norm.c \
	math\m_debug_xform.c \
	math\m_eval.c \
	math\m_matrix.c \
	math\m_translate.c \
	math\m_vector.c \
	math\m_xform.c \
	array_cache\ac_context.c \
	array_cache\ac_import.c \
	swrast\s_aaline.c \
	swrast\s_aatriangle.c \
	swrast\s_accum.c \
	swrast\s_alpha.c \
	swrast\s_alphabuf.c \
	swrast\s_bitmap.c \
	swrast\s_blend.c \
	swrast\s_buffers.c \
	swrast\s_copypix.c \
	swrast\s_context.c \
	swrast\s_depth.c \
	swrast\s_drawpix.c \
	swrast\s_feedback.c \
	swrast\s_fog.c \
	swrast\s_imaging.c \
	swrast\s_lines.c \
	swrast\s_logic.c \
	swrast\s_masking.c \
	swrast\s_nvfragprog.c \
	swrast\s_pixeltex.c \
	swrast\s_points.c \
	swrast\s_readpix.c \
	swrast\s_span.c \
	swrast\s_stencil.c \
	swrast\s_texstore.c \
	swrast\s_texture.c \
	swrast\s_triangle.c \
	swrast\s_zoom.c \
	swrast_setup\ss_context.c \
	swrast_setup\ss_triangle.c \
	swrast_setup\ss_vb.c \
	tnl\t_array_api.c \
	tnl\t_array_import.c \
	tnl\t_context.c \
	tnl\t_eval_api.c \
	tnl\t_imm_alloc.c \
	tnl\t_imm_api.c \
	tnl\t_imm_debug.c \
	tnl\t_imm_dlist.c \
	tnl\t_imm_elt.c \
	tnl\t_imm_eval.c \
	tnl\t_imm_exec.c \
	tnl\t_imm_fixup.c \
	tnl\t_pipeline.c \
	tnl\t_vb_fog.c \
	tnl\t_vb_light.c \
	tnl\t_vb_normals.c \
	tnl\t_vb_points.c \
	tnl\t_vb_program.c \
	tnl\t_vb_render.c \
	tnl\t_vb_texgen.c \
	tnl\t_vb_texmat.c \
	tnl\t_vb_vertex.c

DRIVER_SRCS = \
	Trace\tr_context.c \
	Trace\tr_control.c \
	Trace\tr_error.c \
	Trace\tr_support.c \
	Trace\tr_wrapper.c \
	Trace\tr_write.c \
	Windows\wgl.c \
	Windows\wmesa.c

ASM_SRCS =

SRCS	= $(CORE_SRCS) $(DRIVER_SRCS)

all	: mesadll $(SUBDIRS)

!include "$(TOP)/mesawin32.mak"

mesadll	: $(MESADLL)

CFLAGS	= $(cvarsdll) $(CFLAGS) -D_OPENGL32_ -DBUILD_GL32 -DNO_PARALLEL -DNO_STEREO
!IFNDEF NODEBUG
CFLAGS = $(CFLAGS) -DMESA_DEBUG
!ENDIF
LFLAGS	= $(dlllflags) $(lcommon) $(LFLAGS)

OBJS	= $(ASM_SRCS:.S=.obj) $(CORE_SRCS:.c=.obj) $(DRIVER_SRCS:.c=.obj)
LIBS	= winmm.lib $(guilibsdll)

$(MESADLL)	: $(OBJS) mesa.def
	$(link) $(LFLAGS) -out:$(MESADLL) -def:mesa.def $(OBJS) $(LIBS)
	@echo "copying Mesa dynamic link library to lib directory..."
	-copy $(MESADLL) ..\lib
	@echo "copying Mesa import library to lib directory..."
	-copy $(MESALIB) ..\lib

$(SUBDIRS)	:
	@echo.
	@echo Making in $* directory
	@cd $*
	@nmake -f Makefile.win -nologo
	@cd ..

install	: $(MESADLL)
	@echo.
	@echo "copying Mesa dynamic link library to system directory..."
	-copy $(MESADLL) $(DLLINSTALL)
	@echo "copying Mesa header files to include directory..."
	-copy ..\..\include\GL\gl.h $(INCLUDEINSTALL)
	-copy ..\..\include\GL\glext.h $(INCLUDEINSTALL)
	@echo "copying Mesa import library to library directory..."
	-copy $(MESALIB) $(LIBINSTALL)

clean	::
	@del /f tnl\*.obj
	@del /f swrast_setup\*.obj
	@del /f math\*.obj
	@del /f array_cache\*.obj
	@del /f swrast\*.obj
	@del /f Trace\*.obj
	@del /f osmesa\*.obj
	@del /f Windows\*.obj

clobber	::
	@del /f OSmesa\*.lib
	@del /f OSmesa\*.exp
	@del /f OSmesa\*.dll

# override default inference rule with one that writes the object to
# the same subdir that the c file is in.
.c.obj	:
	$(cc) $(CFLAGS) -I. $< /Fo$*.obj