# Configuration for BeOS
# Written by Philippe Houdoin

include $(TOP)/configs/default

CONFIG_NAME = beos


DEFINES = 	\
	-DBEOS_THREADS 

MACHINE=$(shell uname -m)
ifeq ($(MACHINE), BePC)
	CPU = x86
else
	CPU = ppc
endif

ifeq ($(CPU), x86)
	# BeOS x86 settings

	DEFINES += \
		-DGNU_ASSEMBLER \
		-DUSE_X86_ASM \
		-DUSE_MMX_ASM \
		-DUSE_3DNOW_ASM \
		-DUSE_SSE_ASM
	
	ASM_SOURCES = $(X86_SOURCES)
	ASM_API = $(X86_API)

	CC = gcc
	CXX = g++
	LD = gcc
	
	CFLAGS = \
		-Wall -Wno-multichar -Wno-ctor-dtor-privacy \
		$(DEFINES)

	CXXFLAGS = $(CFLAGS)

	# Work around aliasing bugs - developers should comment this out
	CFLAGS += -fno-strict-aliasing
	CXXFLAGS += -fno-strict-aliasing

	LDFLAGS += -Xlinker

	ifdef DEBUG
		CFLAGS   += -g -O0
		LDFLAGS += -g
		DEFINES += -DDEBUG
	else
		CFLAGS   += -O3
	endif

	GLUT_CFLAGS = -fexceptions

else
	# BeOS PPC settings

	CC = mwcc
	CXX = $(CC)
	LD = mwldppc

	CFLAGS = \
		-w on -requireprotos \
		$(DEFINES)

	CXXFLAGS = $(CFLAGS)

	LDFLAGS += \
		-export pragma \
		-init _init_routine_ \
		-term _term_routine_ \
		-lroot \
		/boot/develop/lib/ppc/glue-noinit.a \
		/boot/develop/lib/ppc/init_term_dyn.o \
		/boot/develop/lib/ppc/start_dyn.o 

	ifdef DEBUG
		CFLAGS   += -g -O0
		CXXFLAGS += -g -O0
		LDFLAGS += -g
	else
		CFLAGS   += -O7
		CXXFLAGS += -O7
	endif

	GLUT_CFLAGS = -fexceptions
endif

# Directories
SRC_DIRS = mesa glu glut/beos
GLU_DIRS = sgi
DRIVER_DIRS = beos
PROGRAM_DIRS = beos samples redbook demos tests

# Library/program dependencies
GL_LIB_DEPS = 
OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
GLU_LIB_DEPS =  
GLUT_LIB_DEPS = -lgame -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
APP_LIB_DEPS = -lbe -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -l$(GLUT_LIB)

