Updated BeOS support (Philippe Houdoin)

This commit is contained in:
Brian Paul 2002-09-19 16:19:43 +00:00
parent cbc1fb0a9a
commit 473e51f2fb
6 changed files with 1569 additions and 888 deletions

View File

@ -3,61 +3,71 @@
Introduction
* Introduction
Mesa 3.1 features a new driver for the BeOS. The new driver implements
Mesa 4.1 features a driver for the BeOS. The driver implements
a clone of the BGLView class. This class, derived from BView, allows
OpenGL rendering into a BeOS window.
The 4.1 BeOS driver is an update of Brian Paul's BeOS driver released in Mesa 3.1.
Any application which uses the BGLView should be able to use Mesa
instead of Be's OpenGL without changing any code.
Since Be's OpenGL implementation (as of R4) is basically just the
Since Be's OpenGL implementation (as of R5) is basically just the
SGI sample implementation, it's pretty slow. You'll see that Mesa
is considerably faster.
Source Code
* Source Code
The source code for the driver is in Mesa-3.1/src/BeOS/GLView.cpp
The source code for the driver is in Mesa-4.1/src/BeOS/ directory.
It's not 100% finished at this time but many GLUT-based demos are
working. No optimizations have been made at this time.
Compiling
* Compiling
In the Mesa-3.x directory type "make -f Makefile.X11 beos-r4".
When it finishes the libMesaGL.so and libMesaGLU.so libraries for
BeOS will be in the Mesa-3.x/lib/ directory.
Requirements:
- gcc version 2.95.3 for BeOS
You can find it here: http://www.bebits.com/app/2157
Move to the Mesa-4.x src sub-directory and then type "make -f Makefile.BeOS-R5".
When it finishes the Mesa based libGL.so library for
BeOS will be in the Mesa-4.x/src/obj.{x86|ppc}/ directory.
To install it as Be's default libGL.so replacement, put it in your
/boot/home/config/lib/ directory. All your GL/GLUTapps will use
the Mesa based then.
By default, it build a non-debug version library.
The x86 (MMX, SSE and 3DNOW) optimizations are also supported for x86 target.
Sorry, Mesa don't have ppc (Altivec) optimizations yet.
* Example Programs
Example Programs
Look in the Mesa-3.x/BeOS/ directory for one or two BGLView demo
Look in the Mesa-4.x/BeOS/ directory for one or two BGLView demo
programs. They should have been compiled along with the Mesa
library.
* GLUT
GLUT
A version of GLUT 2.5 for BeOS can be found in src-glut.beos/.
A beta version of GLUT 3.7 port for BeOS can be found at
http://anobject.com/jehamby/Code/Glut-3.7-x86.zip.
There's is a 2.5 version in src-glut.beos/, too.
The original distribution can be obtained from
http://home.beoscentral.com/jehamby/Glut-3.5-x86.zip
This is a special version of GLUT adapted for the BeOS. I don't
They are special version of GLUT adapted for the BeOS. I don't
believe Mark Kilgard's normal GLUT distribution includes BeOS
support.
It seems that you have to recompile GLUT with libMesaGL.so instead
of libGL.so in order for everything to work. I'm not sure why.
Special Features
* Special Features
Mesa's implementation of the BGLView class has an extra member
function: CopySubBufferMESA(). It basically works like SwapBuffers()
@ -69,7 +79,9 @@ cause a fatal error when running with Be's OpenGL.
Work Left To Do
* Work Left To Do
BDirectWindow single buffering support is not implemented yet.
Color index mode is not implemented yet.
@ -80,7 +92,7 @@ rendering. This should also be implemented for Mesa.
Old BeOS Driver
* Old BeOS Driver
Mesa 2.6 had an earlier BeOS driver. It was based on Mesa's Off-screen
rendering interface, not BGLView. If you're interested in the older
@ -88,7 +100,7 @@ driver you should get Mesa 2.6.
BeOS and Glide
* BeOS and Glide
Mesa 3.0 supported the 3Dfx/Glide library on Beos. Download Mesa 3.0
if interested. Ideally, the 3Dfx/Glide support should be updated to
@ -99,4 +111,4 @@ of February, 1999.
----------------------------------------------------------------------
$Id: README.BEOS,v 1.6 1999/11/27 01:40:40 brianp Exp $
$Id: README.BEOS,v 1.7 2002/09/19 16:19:44 brianp Exp $

View File

@ -1,4 +1,4 @@
/* $Id: gl.h,v 1.69 2002/09/06 02:52:23 brianp Exp $ */
/* $Id: gl.h,v 1.70 2002/09/19 16:19:45 brianp Exp $ */
/*
* Mesa 3-D graphics library
@ -63,6 +63,10 @@
# define GLAPIENTRY
#endif /* WIN32 / CYGWIN bracket */
#if (defined(__BEOS__) && defined(__POWERPC__)) || defined(__QUICKDRAW__)
# define PRAGMA_EXPORT_SUPPORTED 1
#endif
#if defined(_WIN32) && !defined(_WINGDI_) && !defined(_GNU_H_WINDOWS32_DEFINES) && !defined(OPENSTEP) && !defined(__CYGWIN__)
#include <gl/mesa_wgl.h>
#endif
@ -79,10 +83,10 @@
#define signed
#endif
#if defined(__BEOS__) || defined(__QUICKDRAW__)
#if defined(PRAGMA_EXPORT_SUPPORTED)
#pragma export on
#endif
/*
* End system-specific stuff.
**********************************************************************/
@ -726,6 +730,7 @@ typedef double GLclampd; /* double precision float in [0,1] */
#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF
/*
* Miscellaneous
*/
@ -2593,7 +2598,7 @@ GLAPI void GLAPIENTRY glTracePointerRangeMESA( const GLvoid* first, const GLvoid
/**********************************************************************
* Begin system-specific stuff
*/
#if defined(__BEOS__) || defined(__QUICKDRAW__)
#if defined(PRAGMA_EXPORT_SUPPORTED)
#pragma export off
#endif

View File

@ -32,7 +32,7 @@ class SampleGLWindow : public BWindow
{
public:
SampleGLWindow(BRect frame, uint32 type);
virtual bool QuitRequested() { return true; }
virtual bool QuitRequested() { be_app->PostMessage(B_QUIT_REQUESTED); return true; }
private:
SampleGLView *theView;
@ -135,7 +135,7 @@ void SampleGLView::gInit(void)
use_stipple_mode = GL_FALSE;
use_smooth_mode = GL_TRUE;
linesize = 2;
pointsize = 4;
pointsize = 6;
}
@ -147,35 +147,46 @@ void SampleGLView::gDraw(void)
glClear(GL_COLOR_BUFFER_BIT);
glLineWidth(linesize);
/*
if (use_stipple_mode) {
glEnable(GL_LINE_STIPPLE);
} else {
glDisable(GL_LINE_STIPPLE);
}
if (use_smooth_mode) {
glEnable(GL_LINE_SMOOTH);
glEnable(GL_BLEND);
} else {
glDisable(GL_LINE_SMOOTH);
glDisable(GL_BLEND);
}
*/
glDisable(GL_POINT_SMOOTH);
glPushMatrix();
glPointSize(pointsize); // Set size for point
for (i = 0; i < 360; i += 5) {
glRotatef(5.0, 0,0,1); // Rotate right 5 degrees
if (use_smooth_mode) {
glEnable(GL_LINE_SMOOTH);
glEnable(GL_BLEND);
} else {
glDisable(GL_LINE_SMOOTH);
glDisable(GL_BLEND);
}
glColor3f(1.0, 1.0, 0.0); // Set color for line
glBegin(GL_LINE_STRIP); // And create the line
glVertex3fv(pntA);
glVertex3fv(pntB);
glVertex3fv(pntA);
glVertex3fv(pntB);
glEnd();
glPointSize(pointsize); // Set size for point
glDisable(GL_POINT_SMOOTH);
glDisable(GL_BLEND);
glColor3f(0.0, 1.0, 0.0); // Set color for point
glBegin(GL_POINTS);
glVertex3fv(pntA); // Draw point at one end
glVertex3fv(pntB); // Draw point at other end
glVertex3fv(pntA); // Draw point at one end
glVertex3fv(pntB); // Draw point at other end
glEnd();
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,452 @@
# Mesa 3-D graphics library
# Version: 4.1
#
# Copyright (C) 1995-2002 Brian Paul 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
# BRIAN PAUL 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.
#
# BeOS driver makefile v1.0 for Mesa 4.1
#
# Copyright (C) 2002 - Philippe Houdoin
# Email : philippe.houdoin@free.fr
# Web : http://philippe.houdoin.free.fr/phil/beos/index-en.html
#
# -------------------------------------------------------------------
## BeOS Generic Makefile v2.0 ##
## Fill in this file to specify the project being created, and the referenced
## makefile-engine will do all of the hard work for you. This handles both
## Intel and PowerPC builds of the BeOS.
## Application Specific Settings ---------------------------------------------
# specify the name of the binary
NAME= libGL.so
# specify the type of binary
# APP: Application
# SHARED: Shared library or add-on
# STATIC: Static library archive
# DRIVER: Kernel Driver
TYPE= SHARED
# specify the source files to use
# full paths or paths relative to the makefile can be included
# all files, regardless of directory, will have their object
# files created in the common object directory.
# Note that this means this makefile will not work correctly
# if two source files with the same name (source.c or source.cpp)
# are included from different directories. Also note that spaces
# in folder names do not work well with this makefile.
MESA_CORE_SRCS = \
api_arrayelt.c \
api_loopback.c \
api_noop.c \
api_validate.c \
accum.c \
attrib.c \
blend.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 \
mem.c \
mmath.c \
pixel.c \
points.c \
polygon.c \
rastpos.c \
state.c \
stencil.c \
texformat.c \
teximage.c \
texobj.c \
texstate.c \
texstore.c \
texutil.c \
varray.c \
vpexec.c \
vpparse.c \
vpstate.c \
vtxfmt.c \
math/m_debug_clip.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_histogram.c \
swrast/s_imaging.c \
swrast/s_lines.c \
swrast/s_logic.c \
swrast/s_masking.c \
swrast/s_pixeltex.c \
swrast/s_points.c \
swrast/s_readpix.c \
swrast/s_span.c \
swrast/s_stencil.c \
swrast/s_texture.c \
swrast/s_texstore.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
MESA_BEOS_DRIVER_SRCS = \
BeOS/GLView.cpp
MESA_X86_SRCS = \
X86/x86.c \
X86/glapi_x86.S \
X86/common_x86.c \
X86/common_x86_asm.S \
X86/x86_xform2.S \
X86/x86_xform3.S \
X86/x86_xform4.S \
X86/x86_cliptest.S
MESA_MMX_SRCS = \
X86/mmx_blend.S
MESA_SSE_SRCS = \
X86/sse.c \
X86/sse_xform2.S \
X86/sse_xform3.S \
X86/sse_xform4.S \
X86/sse_normal.S
MESA_3DNOW_SRCS = \
X86/3dnow.c \
X86/3dnow_normal.S \
X86/3dnow_xform1.S \
X86/3dnow_xform2.S \
X86/3dnow_xform3.S \
X86/3dnow_xform4.S
MESA_DEFINES =
# To use GAS assembler, uncomment this line instead:
MESA_DEFINES += GNU_ASSEMBLER
# To use NASM assembler, uncomment this line instead:
# MESA_DEFINES += NASM_ASSEMBLER
# To build a DEBUG version of Mesa, uncomment this line instead:
# MESA_DEFINES += DEBUG
# x86-optimized code
MACHINE=$(shell uname -m)
ifeq ($(MACHINE), BePC)
HAVE_MMX = 1
HAVE_SSE = 1
HAVE_3DNOW = 1
else
# No assembly optimization for PowerPC...
# HAVE_ALTIVEC=1
endif
ifdef HAVE_MMX
MESA_X86_SRCS += $(MESA_MMX_SRCS)
MESA_DEFINES += USE_MMX_ASM
HAVE_X86 = 1
endif
ifdef HAVE_SSE
MESA_X86_SRCS += $(MESA_SSE_SRCS)
MESA_DEFINES += USE_SSE_ASM
HAVE_X86 = 1
endif
ifdef HAVE_3DNOW
MESA_X86_SRCS += $(MESA_3DNOW_SRCS)
MESA_DEFINES += USE_3DNOW_ASM
HAVE_X86 = 1
endif
ifdef HAVE_X86
MESA_DEFINES += USE_X86_ASM
else
MESA_X86_SRCS =
endif
# FIXME: SI-GLU version support currently broken
# USE_SI_GLU=1
ifdef USE_SI_GLU
GLU_SRCS = \
../si-glu/libutil/error.c \
../si-glu/libutil/glue.c \
../si-glu/libutil/mipmap.c \
../si-glu/libutil/project.c \
../si-glu/libutil/quad.c \
../si-glu/libutil/registry.c \
../si-glu/libtess/dict.c \
../si-glu/libtess/geom.c \
../si-glu/libtess/memalloc.c \
../si-glu/libtess/mesh.c \
../si-glu/libtess/normal.c \
../si-glu/libtess/priorityq.c \
../si-glu/libtess/render.c \
../si-glu/libtess/sweep.c \
../si-glu/libtess/tess.c \
../si-glu/libtess/tessmono.c \
../si-glu/libnurbs/interface/bezierEval.cc \
../si-glu/libnurbs/interface/bezierPatch.cc \
../si-glu/libnurbs/interface/bezierPatchMesh.cc \
../si-glu/libnurbs/interface/glcurveval.cc \
../si-glu/libnurbs/interface/glinterface.cc \
../si-glu/libnurbs/interface/glrenderer.cc \
../si-glu/libnurbs/interface/glsurfeval.cc \
../si-glu/libnurbs/interface/incurveeval.cc \
../si-glu/libnurbs/interface/insurfeval.cc \
../si-glu/libnurbs/internals/arc.cc \
../si-glu/libnurbs/internals/arcsorter.cc \
../si-glu/libnurbs/internals/arctess.cc \
../si-glu/libnurbs/internals/backend.cc \
../si-glu/libnurbs/internals/basiccrveval.cc \
../si-glu/libnurbs/internals/basicsurfeval.cc \
../si-glu/libnurbs/internals/bin.cc \
../si-glu/libnurbs/internals/bufpool.cc \
../si-glu/libnurbs/internals/cachingeval.cc \
../si-glu/libnurbs/internals/ccw.cc \
../si-glu/libnurbs/internals/coveandtiler.cc \
../si-glu/libnurbs/internals/curve.cc \
../si-glu/libnurbs/internals/curvelist.cc \
../si-glu/libnurbs/internals/curvesub.cc \
../si-glu/libnurbs/internals/dataTransform.cc \
../si-glu/libnurbs/internals/displaylist.cc \
../si-glu/libnurbs/internals/flist.cc \
../si-glu/libnurbs/internals/flistsorter.cc \
../si-glu/libnurbs/internals/hull.cc \
../si-glu/libnurbs/internals/intersect.cc \
../si-glu/libnurbs/internals/knotvector.cc \
../si-glu/libnurbs/internals/mapdesc.cc \
../si-glu/libnurbs/internals/mapdescv.cc \
../si-glu/libnurbs/internals/maplist.cc \
../si-glu/libnurbs/internals/mesher.cc \
../si-glu/libnurbs/internals/monoTriangulationBackend.cc \
../si-glu/libnurbs/internals/monotonizer.cc \
../si-glu/libnurbs/internals/mycode.cc \
../si-glu/libnurbs/internals/nurbsinterfac.cc \
../si-glu/libnurbs/internals/nurbstess.cc \
../si-glu/libnurbs/internals/patch.cc \
../si-glu/libnurbs/internals/patchlist.cc \
../si-glu/libnurbs/internals/quilt.cc \
../si-glu/libnurbs/internals/reader.cc \
../si-glu/libnurbs/internals/renderhints.cc \
../si-glu/libnurbs/internals/slicer.cc \
../si-glu/libnurbs/internals/sorter.cc \
../si-glu/libnurbs/internals/splitarcs.cc \
../si-glu/libnurbs/internals/subdivider.cc \
../si-glu/libnurbs/internals/tobezier.cc \
../si-glu/libnurbs/internals/trimline.cc \
../si-glu/libnurbs/internals/trimregion.cc \
../si-glu/libnurbs/internals/trimvertpool.cc \
../si-glu/libnurbs/internals/uarray.cc \
../si-glu/libnurbs/internals/varray.cc \
../si-glu/libnurbs/nurbtess/directedLine.cc \
../si-glu/libnurbs/nurbtess/gridWrap.cc \
../si-glu/libnurbs/nurbtess/monoChain.cc \
../si-glu/libnurbs/nurbtess/monoPolyPart.cc \
../si-glu/libnurbs/nurbtess/monoTriangulation.cc \
../si-glu/libnurbs/nurbtess/partitionX.cc \
../si-glu/libnurbs/nurbtess/partitionY.cc \
../si-glu/libnurbs/nurbtess/polyDBG.cc \
../si-glu/libnurbs/nurbtess/polyUtil.cc \
../si-glu/libnurbs/nurbtess/primitiveStream.cc \
../si-glu/libnurbs/nurbtess/quicksort.cc \
../si-glu/libnurbs/nurbtess/rectBlock.cc \
../si-glu/libnurbs/nurbtess/sampleComp.cc \
../si-glu/libnurbs/nurbtess/sampleCompBot.cc \
../si-glu/libnurbs/nurbtess/sampleCompRight.cc \
../si-glu/libnurbs/nurbtess/sampleCompTop.cc \
../si-glu/libnurbs/nurbtess/sampleMonoPoly.cc \
../si-glu/libnurbs/nurbtess/sampledLine.cc \
../si-glu/libnurbs/nurbtess/searchTree.cc
else
GLU_SRCS = \
../src-glu/glu.c \
../src-glu/mipmap.c \
../src-glu/project.c \
../src-glu/quadric.c \
../src-glu/tess.c \
../src-glu/tesselat.c \
../src-glu/polytest.c \
../src-glu/nurbs.c \
../src-glu/nurbscrv.c \
../src-glu/nurbssrf.c \
../src-glu/nurbsutl.c
endif
SRCS = $(MESA_CORE_SRCS) $(MESA_X86_SRCS) $(GLU_SRCS) $(MESA_BEOS_DRIVER_SRCS)
# specify the resource files to use
# full path or a relative path to the resource file can be used.
RSRCS =
# specify additional libraries to link against
# there are two acceptable forms of library specifications
# - if your library follows the naming pattern of:
# libXXX.so or libXXX.a you can simply specify XXX
# library: libbe.so entry: be
#
# - if your library does not follow the standard library
# naming scheme you need to specify the path to the library
# and it's name
# library: my_lib.a entry: my_lib.a or path/my_lib.a
LIBS = be
# specify additional paths to directories following the standard
# libXXX.so or libXXX.a naming scheme. You can specify full paths
# or paths relative to the makefile. The paths included may not
# be recursive, so include all of the paths where libraries can
# be found. Directories where source files are found are
# automatically included.
LIBPATHS =
# additional paths to look for system headers
# thes use the form: #include <header>
# source file directories are NOT auto-included here
SYSTEM_INCLUDE_PATHS = ../include
ifdef USE_SI_GLU
SYSTEM_INCLUDE_PATHS += ../si-glu/include
endif
# additional paths to look for local headers
# thes use the form: #include "header"
# source file directories are automatically included
LOCAL_INCLUDE_PATHS =
# specify the level of optimization that you desire
# NONE, SOME, FULL
OPTIMIZE = FULL
# specify any preprocessor symbols to be defined. The symbols
# will be set to a value of 1. For example specify DEBUG if you want
# DEBUG=1 to be set when compiling.
DEFINES = $(MESA_DEFINES)
# specify special warning levels
# if unspecified default warnings will be used
# NONE = suppress all warnings
# ALL = enable all warnings
WARNINGS = ALL
# specify whether image symbols will be created
# so that stack crawls in the debugger are meaningful
# if TRUE symbols will be created
SYMBOLS = TRUE
# specify debug settings
# if TRUE will allow application to be run from
# a source-level debugger
# DEBUGGER = TRUE
DEBUGGER = FALSE
# specify additional compiler flags for all files
COMPILER_FLAGS =
# specify additional linker flags
LINKER_FLAGS =
## include the makefile-engine
include /boot/develop/etc/makefile-engine
# X86/matypes.h include file is *generated*!
# Rules to (re)generate it as needed:
X86/common_x86_asm.S : X86/matypes.h
X86/matypes.h : X86/gen_matypes.c
@echo "(Re-)Generating $@ ..."
$(CC) $< $(INCLUDES) $(CFLAGS) -o X86/gen_matypes
X86/gen_matypes > $@
rm -f X86/gen_matypes
## Add NASM support for assembly code compilation...
# $(OBJ_DIR)/%.o : %.nasm
# nasm -f elf $(MESA_DEFINES) -o $@ $<
$(OBJ_DIR)/%.o : %.S
gcc -c $< $(INCLUDES) $(CFLAGS) -o $@
# gcc $(INCLUDES) $(CFLAGS) -E $< | grep -v '^$$' > $(addsuffix .nasm, $(basename $<))
# nasm -f elf $(MESA_DEFINES) -o $@ $(addsuffix .nasm, $(basename $<))

View File

@ -1,4 +1,4 @@
/* $Id: gen_matypes.c,v 1.7 2002/02/15 16:32:36 brianp Exp $ */
/* $Id: gen_matypes.c,v 1.8 2002/09/19 16:19:45 brianp Exp $ */
/*
* Mesa 3-D graphics library
@ -66,11 +66,21 @@ do { \
printf( "\n" ); \
} while (0)
#if defined(__BEOS__)
#define OFFSET( s, t, m ) \
printf( "#define %s\t%ld\n", s, offsetof( t, m ) );
#else
#define OFFSET( s, t, m ) \
printf( "#define %s\t%d\n", s, offsetof( t, m ) );
#endif
#if defined(__BEOS__)
#define SIZEOF( s, t ) \
printf( "#define %s\t%ld\n", s, sizeof(t) );
#else
#define SIZEOF( s, t ) \
printf( "#define %s\t%d\n", s, sizeof(t) );
#endif
#define DEFINE( s, d ) \
printf( "#define %s\t0x%x\n", s, d );