SubDir HAIKU_TOP src kits opengl ;

SetSubDirSupportedPlatformsBeOSCompatible ;

UsePrivateHeaders interface opengl ;
UsePrivateSystemHeaders ;

if $(TARGET_PLATFORM) != haiku {
	UseHeaders [ FDirName $(HAIKU_TOP) headers os opengl ] : true ;
		# We need our public GL headers also when not compiling for Haiku.
}


UseHeaders [ FDirName $(SUBDIR) mesa ] ;
UseHeaders [ FDirName $(SUBDIR) mesa main ] ;
UseHeaders [ FDirName $(SUBDIR) mesa glapi ] ;
UseHeaders [ FDirName $(SUBDIR) mesa math ] ;
UseHeaders [ FDirName $(SUBDIR) mesa tnl ] ;
UseHeaders [ FDirName $(SUBDIR) mesa shader ] ;
UseHeaders [ FDirName $(SUBDIR) mesa swrast ] ;
UseHeaders [ FDirName $(SUBDIR) mesa swrast_setup ] ;

{
	local defines ;
	defines = BEOS_THREADS GNU_ASSEMBLER ;

	if $(TARGET_ARCH) = x86 {
		defines += USE_X86_ASM USE_MMX_ASM USE_3DNOW_ASM USE_SSE_ASM ;
	} else if $(TARGET_ARCH) = ppc {
		# Not yet supported, as current Mesa3D PPC assembly is Linux-dependent!
		# defines += USE_PPC_ASM ;
	} else if $(TARGET_ARCH) = sparc {
		defines += USE_SPARC_ASM ;
	}

	defines = [ FDefines $(defines) ] ;
	SubDirCcFlags $(defines) ;
	SubDirC++Flags $(defines) ;
}

SharedLibrary libGL.so :
	GLView.cpp
	GLDispatcher.cpp
	GLRenderer.cpp
	GLRendererRoster.cpp

	:

	# Mesa GL API dispatching code
	<mesa>glapi-dispatching.o

	# GLU API is included in libGL.so under BeOS R5, not a separate libglu.so library
	<opengl>sgi-glu.o

	# GLUT API is included in libGL.so under Haiku, not a separate libglut.so library
	<opengl>glut.o 

	# External libs:
	be 
	game			# BWindowScreen needed by BGLScreen stub class 
	$(TARGET_LIBSTDC++)
;

Package haiku-opengl-cvs :
	libGL.so : 
	boot beos system lib ;

SubInclude HAIKU_TOP src kits opengl glu ;
SubInclude HAIKU_TOP src kits opengl glut ;
SubInclude HAIKU_TOP src kits opengl mesa ;
