1diff -rupN Mesa-7.8.2/bin/mklib Mesa-7.8.2-haiku/bin/mklib 2--- Mesa-7.8.2/bin/mklib 2010-06-15 17:43:41.034340864 +0000 3+++ Mesa-7.8.2-haiku/bin/mklib 2012-01-17 09:57:07.461373440 +0000 4@@ -260,7 +260,7 @@ if [ $STATIC = 1 ]; then 5 NEWOBJECTS="" 6 for OBJ in $OBJECTS ; do 7 case $OBJ in 8- -Wl,*) 9+ -Wl,*|-L*|-l*) 10 echo "mklib: warning: ignoring $OBJ for static library" 11 ;; 12 *) 13@@ -307,7 +307,7 @@ fi 14 # 15 case $ARCH in 16 17- 'Linux' | 'OpenBSD' | 'DragonFly' | 'GNU' | GNU/*) 18+ 'Linux' | 'OpenBSD' | 'DragonFly' | 'GNU' | GNU/* | 'NetBSD') 19 # we assume gcc 20 21 if [ "x$LINK" = "x" ] ; then 22@@ -494,13 +494,16 @@ case $ARCH in 23 OPTS="${OPTS} -Wl,-Mmapfile.scope" 24 fi 25 26- # Check if objects are SPARC v9 27+ # Check if objects are 64-bit 28 # file says: ELF 64-bit MSB relocatable SPARCV9 Version 1 29 set ${OBJECTS} 30 if [ ${LINK} = "cc" -o ${LINK} = "CC" ] ; then 31- SPARCV9=`file $1 | grep SPARCV9` 32- if [ "${SPARCV9}" ] ; then 33- OPTS="${OPTS} -xarch=v9" 34+ ABI64=`file $1 | grep "ELF 64-bit"` 35+ if [ "${ABI64}" ] ; then 36+ case `uname -p` in 37+ sparc) OPTS="${OPTS} -xarch=v9" ;; 38+ i386) OPTS="${OPTS} -xarch=amd64" ;; 39+ esac 40 fi 41 fi 42 if [ "${ALTOPTS}" ] ; then 43@@ -571,20 +574,6 @@ case $ARCH in 44 fi 45 ;; 46 47- 'NetBSD') 48- if [ $STATIC = 1 ] ; then 49- LIBNAME="lib${LIBNAME}_pic.a" 50- echo "mklib: Making NetBSD PIC static library: " ${LIBNAME} 51- FINAL_LIBS=`make_ar_static_lib cq 1 ${LIBNAME} ${OBJECTS}` 52- else 53- LIBNAME="lib${LIBNAME}.so.${MAJOR}.${MINOR}" 54- echo "mklib: Making NetBSD PIC shared library: " ${LIBNAME} 55- rm -f ${LIBNAME} 56- ld -x -Bshareable -Bforcearchive -o ${LIBNAME} ${OBJECTS} 57- FINAL_LIBS=${LIBNAME} 58- fi 59- ;; 60- 61 'IRIX' | 'IRIX64') 62 if [ $STATIC = 1 ] ; then 63 LIBNAME="lib${LIBNAME}.a" 64@@ -778,9 +767,8 @@ case $ARCH in 65 OPTS="${OPTS} -exported_symbols_list ${EXPORTS}" 66 fi 67 68- LINKNAME="lib${LIBNAME}.${MAJOR}.${LIBSUFFIX}" 69- LINKNAME2="lib${LIBNAME}.${LIBSUFFIX}" 70- LIBNAME="lib${LIBNAME}.${MAJOR}.${MINOR}.${LIBSUFFIX}" 71+ LINKNAME="lib${LIBNAME}.${LIBSUFFIX}" 72+ LIBNAME="lib${LIBNAME}.${MAJOR}.${LIBSUFFIX}" 73 74 # examine first object to determine ABI 75 set ${OBJECTS} 76@@ -793,9 +781,6 @@ case $ARCH in 77 OPTS=${ALTOPTS} 78 fi 79 80- # XXX can we always add -isysroot /Developer/SDKs/MacOSX10.4u.sdk 81- # to OPTS here? 82- 83 # determine linker 84 if [ $CPLUSPLUS = 1 ] ; then 85 LINK="g++" 86@@ -807,8 +792,7 @@ case $ARCH in 87 88 ${LINK} ${OPTS} ${LDFLAGS} -o ${LIBNAME} ${OBJECTS} ${DEPS} 89 ln -s ${LIBNAME} ${LINKNAME} 90- ln -s ${LIBNAME} ${LINKNAME2} 91- FINAL_LIBS="${LIBNAME} ${LINKNAME} ${LINKNAME2}" 92+ FINAL_LIBS="${LIBNAME} ${LINKNAME}" 93 fi 94 ;; 95 96@@ -818,22 +802,6 @@ case $ARCH in 97 FINAL_LIBS=`make_ar_static_lib -ru 0 ${LIBNAME} ${OBJECTS}` 98 ;; 99 100- 'BeOS') 101- if [ $STATIC = 1 ] ; then 102- LIBNAME="lib${LIBNAME}.a" 103- echo "mklib: Making BeOS static library: " ${LIBNAME} 104- FINAL_LIBS=`make_ar_static_lib -cru 0 ${LIBNAME} ${OBJECTS}` 105- else 106- LIBNAME="lib${LIBNAME}.so" 107- echo "mklib: Making BeOS shared library: " ${LIBNAME} 108- gcc -nostart -Xlinker "-soname=${LIBNAME}" -L/Be/develop/lib/x86 -lbe ${DEPS} ${OBJECTS} -o "${LIBNAME}" 109- mimeset -f "${LIBNAME}" 110- # XXX remove the Mesa3D stuff here since mklib isn't mesa-specific. 111- setversion "${LIBNAME}" -app ${MAJOR} ${MINOR} ${PATCH} -short "Powered by Mesa3D!" -long "Powered by Mesa3D!" 112- fi 113- FINAL_LIBS=${LIBNAME} 114- ;; 115- 116 'QNX') 117 LIBNAME="lib${LIBNAME}.a" 118 echo "mklib: Making QNX library: " ${LIBNAME} 119@@ -927,6 +895,16 @@ case $ARCH in 120 121 CYGWIN*) 122 # GCC-based environment 123+ 124+ if [ "x$LINK" = "x" ] ; then 125+ # -linker was not specified so set default link command now 126+ if [ $CPLUSPLUS = 1 ] ; then 127+ LINK=g++ 128+ else 129+ LINK=gcc 130+ fi 131+ fi 132+ 133 if [ $NOPREFIX = 1 ] ; then 134 # No "lib" or ".so" part 135 echo "mklib: Making CYGWIN shared library: " ${LIBNAME} 136@@ -935,7 +913,7 @@ case $ARCH in 137 OPTS=${ALTOPTS} 138 fi 139 rm -f ${LIBNAME} 140- ${LINK} ${OPTS} ${LDFLAGS} -o ${LIBNAME} ${OBJECTS} ${DEPS} 141+ ${LINK} ${OPTS} ${LDFLAGS} -o ${LIBNAME} ${OBJECTS} ${DEPS} || exit $? 142 FINAL_LIBS=${LIBNAME} 143 else 144 CYGNAME="cyg${LIBNAME}" # prefix with "cyg" 145@@ -943,7 +921,7 @@ case $ARCH in 146 147 if [ $STATIC = 1 ] ; then 148 LIBNAME=${LIBNAME}.a 149- echo "mklib: Making" $ARCH "static library: " ${LIBNAME} 150+ echo "mklib: Making CYGWIN static library: " ${LIBNAME} 151 OPTS="-ru" 152 if [ "${ALTOPTS}" ] ; then 153 OPTS=${ALTOPTS} 154@@ -961,13 +939,7 @@ case $ARCH in 155 if [ "${ALTOPTS}" ] ; then 156 OPTS=${ALTOPTS} 157 fi 158- echo "mklib: Making" $ARCH "shared library: " ${CYGNAME}-${MAJOR}.dll 159- 160- if [ $CPLUSPLUS = 1 ] ; then 161- LINK="g++" 162- else 163- LINK="gcc" 164- fi 165+ echo "mklib: Making CYGWIN shared library: " ${CYGNAME}-${MAJOR}.dll 166 167 # rm any old libs 168 rm -f ${CYGNAME}-${MAJOR}.dll 169@@ -976,12 +948,7 @@ case $ARCH in 170 rm -f ${LIBNAME}.a 171 172 # make lib 173- ${LINK} ${OPTS} ${LDFLAGS} -o ${CYGNAME}-${MAJOR}.dll ${OBJECTS} ${DEPS} 174- # make build fail if link failed 175- es=$? 176- if [ "$es" -ne "0" ]; then 177- exit $es 178- fi 179+ ${LINK} ${OPTS} ${LDFLAGS} -o ${CYGNAME}-${MAJOR}.dll ${OBJECTS} ${DEPS} || exit $? 180 # make usual symlinks 181 ln -s ${LIBNAME}-${MAJOR}.dll.a ${LIBNAME}.dll.a 182 # finish up 183@@ -992,6 +959,43 @@ case $ARCH in 184 fi 185 ;; 186 187+ 'Haiku') 188+ if [ $STATIC = 1 ] ; then 189+ LIBNAME="lib${LIBNAME}.a" 190+ if [ "x$LINK" = "x" ] ; then 191+ # -linker was not specified so set default link command now 192+ if [ $CPLUSPLUS = 1 ] ; then 193+ LINK=g++ 194+ else 195+ LINK=gcc 196+ fi 197+ fi 198+ 199+ OPTS="-ru" 200+ if [ "${ALTOPTS}" ] ; then 201+ OPTS=${ALTOPTS} 202+ fi 203+ 204+ echo "mklib: Making static library for Haiku: " ${LIBNAME} 205+ 206+ # expand .a into .o files 207+ NEW_OBJECTS=`expand_archives ${LIBNAME}.obj $OBJECTS` 208+ 209+ # make static lib 210+ FINAL_LIBS=`make_ar_static_lib ${OPTS} 1 ${LIBNAME} ${NEW_OBJECTS}` 211+ 212+ # remove temporary extracted .o files 213+ rm -rf ${LIBNAME}.obj 214+ else 215+ LIBNAME="lib${LIBNAME}.so" # prefix with "lib", suffix with ".so" 216+ OPTS="-shared" 217+ 218+ echo "mklib: Making shared library for Haiku: " ${LIBNAME} 219+ ${LINK} ${OPTS} ${LDFLAGS} ${OBJECTS} ${DEPS} -o ${LIBNAME} 220+ FINAL_LIBS="${LIBNAME}" 221+ fi 222+ ;; 223+ 224 'example') 225 # If you're adding support for a new architecture, you can 226 # start with this: 227@@ -1021,4 +1025,9 @@ if [ ${INSTALLDIR} != "." ] ; then 228 echo "mklib: Installing" ${FINAL_LIBS} "in" ${INSTALLDIR} 229 test -d ${INSTALLDIR} || mkdir -p ${INSTALLDIR} 230 mv ${FINAL_LIBS} ${INSTALLDIR}/ 231+ 232+ if [ "x${FINAL_BINS}" != "x" ] ; then 233+ echo "mklib: Installing" ${FINAL_BINS} "in" ${INSTALLDIR} 234+ mv ${FINAL_BINS} ${INSTALLDIR}/ 235+ fi 236 fi 237diff -rupN Mesa-7.8.2/configs/current Mesa-7.8.2-haiku/configs/current 238--- Mesa-7.8.2/configs/current 1970-01-01 00:00:00.000000000 +0000 239+++ Mesa-7.8.2-haiku/configs/current 2012-01-17 11:03:50.553910272 +0000 240@@ -0,0 +1,63 @@ 241+# Configuration for Haiku 242+# Written by Alexander von Gluck IV 243+# 244+# Based on the BeOS config 245+# written by Philippe Houdoin 246+ 247+include $(TOP)/configs/default 248+ 249+CONFIG_NAME = haiku 250+ 251+# Haiku settings 252+ 253+DEFINES = \ 254+ -DBEOS_THREADS \ 255+ -DGNU_ASSEMBLER \ 256+ -DUSE_X86_ASM \ 257+ -DUSE_MMX_ASM \ 258+ -DUSE_3DNOW_ASM \ 259+ -DUSE_SSE_ASM 260+ 261+MESA_ASM_SOURCES = $(X86_SOURCES) 262+GLAPI_ASM_SOURCES = $(X86_API) 263+ 264+CC = gcc 265+CXX = g++ 266+LD = gcc 267+ 268+CFLAGS = -Wall -Wno-multichar $(DEFINES) 269+CXXFLAGS = $(CFLAGS) 270+LDFLAGS += 271+ 272+# Work around aliasing bugs - developers should comment this out 273+CFLAGS += -fno-strict-aliasing 274+#CFLAGS += -std=c99 275+CXXFLAGS += -fno-strict-aliasing 276+ 277+# No makedepend on Haiku, this will solve it 278+MKDEP = true 279+ 280+# Debug defines 281+ifdef DEBUG 282+ CFLAGS += -g -O0 283+ LDFLAGS += -g 284+ DEFINES += -DDEBUG 285+else 286+ CFLAGS += -O3 287+endif 288+ 289+# GLU settings 290+GLU_LIB_NAME = libglu.a 291+GLU_LIB = glu 292+ 293+# Directories 294+SRC_DIRS = glsl mesa/x86 mapi/glapi mesa glu 295+GLU_DIRS = sgi 296+DRIVER_DIRS = 297+PROGRAM_DIRS = 298+ 299+# Library/program dependencies 300+GL_LIB_DEPS = 301+OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) 302+GLU_LIB_DEPS = 303+APP_LIB_DEPS = -lbe -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -l$(GLUT_LIB) 304diff -rupN Mesa-7.8.2/configs/haiku Mesa-7.8.2-haiku/configs/haiku 305--- Mesa-7.8.2/configs/haiku 1970-01-01 00:00:00.000000000 +0000 306+++ Mesa-7.8.2-haiku/configs/haiku 2012-01-17 11:03:50.553910272 +0000 307@@ -0,0 +1,63 @@ 308+# Configuration for Haiku 309+# Written by Alexander von Gluck IV 310+# 311+# Based on the BeOS config 312+# written by Philippe Houdoin 313+ 314+include $(TOP)/configs/default 315+ 316+CONFIG_NAME = haiku 317+ 318+# Haiku settings 319+ 320+DEFINES = \ 321+ -DBEOS_THREADS \ 322+ -DGNU_ASSEMBLER \ 323+ -DUSE_X86_ASM \ 324+ -DUSE_MMX_ASM \ 325+ -DUSE_3DNOW_ASM \ 326+ -DUSE_SSE_ASM 327+ 328+MESA_ASM_SOURCES = $(X86_SOURCES) 329+GLAPI_ASM_SOURCES = $(X86_API) 330+ 331+CC = gcc 332+CXX = g++ 333+LD = gcc 334+ 335+CFLAGS = -Wall -Wno-multichar $(DEFINES) 336+CXXFLAGS = $(CFLAGS) 337+LDFLAGS += 338+ 339+# Work around aliasing bugs - developers should comment this out 340+CFLAGS += -fno-strict-aliasing 341+#CFLAGS += -std=c99 342+CXXFLAGS += -fno-strict-aliasing 343+ 344+# No makedepend on Haiku, this will solve it 345+MKDEP = true 346+ 347+# Debug defines 348+ifdef DEBUG 349+ CFLAGS += -g -O0 350+ LDFLAGS += -g 351+ DEFINES += -DDEBUG 352+else 353+ CFLAGS += -O3 354+endif 355+ 356+# GLU settings 357+GLU_LIB_NAME = libglu.a 358+GLU_LIB = glu 359+ 360+# Directories 361+SRC_DIRS = glsl mesa/x86 mapi/glapi mesa glu 362+GLU_DIRS = sgi 363+DRIVER_DIRS = 364+PROGRAM_DIRS = 365+ 366+# Library/program dependencies 367+GL_LIB_DEPS = 368+OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) 369+GLU_LIB_DEPS = 370+APP_LIB_DEPS = -lbe -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -l$(GLUT_LIB) 371Binary files Mesa-7.8.2/lib/libglu.a and Mesa-7.8.2-haiku/lib/libglu.a differ 372diff -rupN Mesa-7.8.2/Makefile Mesa-7.8.2-haiku/Makefile 373--- Mesa-7.8.2/Makefile 2010-06-16 21:22:57.033030144 +0000 374+++ Mesa-7.8.2-haiku/Makefile 2012-01-17 09:56:45.423886848 +0000 375@@ -84,6 +84,7 @@ freebsd \ 376 freebsd-dri \ 377 freebsd-dri-amd64 \ 378 freebsd-dri-x86 \ 379+haiku \ 380 hpux10 \ 381 hpux10-gcc \ 382 hpux10-static \ 383diff -rupN Mesa-7.8.2/src/gallium/auxiliary/draw/draw_private.h Mesa-7.8.2-haiku/src/gallium/auxiliary/draw/draw_private.h 384--- Mesa-7.8.2/src/gallium/auxiliary/draw/draw_private.h 2010-06-15 17:43:42.046137344 +0000 385+++ Mesa-7.8.2-haiku/src/gallium/auxiliary/draw/draw_private.h 2012-01-17 09:59:43.815005696 +0000 386@@ -70,7 +70,7 @@ struct vertex_header { 387 388 /* This will probably become float (*data)[4] soon: 389 */ 390- float data[][4]; 391+ float (*data)[4]; 392 }; 393 394 /* NOTE: It should match vertex_id size above */ 395diff -rupN Mesa-7.8.2/src/gallium/auxiliary/os/os_thread.h Mesa-7.8.2-haiku/src/gallium/auxiliary/os/os_thread.h 396--- Mesa-7.8.2/src/gallium/auxiliary/os/os_thread.h 2010-06-15 17:43:42.056098816 +0000 397+++ Mesa-7.8.2-haiku/src/gallium/auxiliary/os/os_thread.h 2012-01-17 10:00:38.613154816 +0000 398@@ -257,7 +257,7 @@ typedef unsigned pipe_condvar; 399 * pipe_barrier 400 */ 401 402-#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_HAIKU) 403+#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) 404 405 typedef pthread_barrier_t pipe_barrier; 406 407diff -rupN Mesa-7.8.2/src/gallium/auxiliary/util/u_debug.h Mesa-7.8.2-haiku/src/gallium/auxiliary/util/u_debug.h 408--- Mesa-7.8.2/src/gallium/auxiliary/util/u_debug.h 2010-06-15 17:43:42.066584576 +0000 409+++ Mesa-7.8.2-haiku/src/gallium/auxiliary/util/u_debug.h 2012-01-17 10:02:01.553385984 +0000 410@@ -91,8 +91,10 @@ debug_printf(const char *format, ...) 411 (void) format; /* silence warning */ 412 #endif 413 } 414- 415-#endif /* !PIPE_OS_HAIKU */ 416+#else /* is Haiku */ 417+/* Haiku provides debug_printf in libroot with OS.h */ 418+#include <OS.h> 419+#endif 420 421 /* 422 * ... isn't portable so we need to pass arguments in parentheses. 423diff -rupN Mesa-7.8.2/src/glu/sgi/Makefile Mesa-7.8.2-haiku/src/glu/sgi/Makefile 424--- Mesa-7.8.2/src/glu/sgi/Makefile 2010-02-05 00:10:40.063963136 +0000 425+++ Mesa-7.8.2-haiku/src/glu/sgi/Makefile 2012-01-17 10:02:42.222822400 +0000 426@@ -135,13 +135,19 @@ $(TOP)/$(LIB_DIR): 427 -mkdir $(TOP)/$(LIB_DIR) 428 429 # Make the library: 430-$(TOP)/$(LIB_DIR)/$(GLU_LIB_NAME): $(OBJECTS) 431+$(TOP)/$(LIB_DIR)/lib$(GLU_LIB).so: $(OBJECTS) 432 $(MKLIB) -o $(GLU_LIB) -linker '$(CXX)' -ldflags '$(LDFLAGS)' \ 433 -major $(GLU_MAJOR) -minor $(GLU_MINOR) -patch $(GLU_TINY) \ 434 -cplusplus $(MKLIB_OPTIONS) -install $(TOP)/$(LIB_DIR) \ 435 -exports glu.exports -id $(INSTALL_LIB_DIR)/lib$(GLU_LIB).$(GLU_MAJOR).dylib \ 436 $(GLU_LIB_DEPS) $(OBJECTS) 437 438+$(TOP)/$(LIB_DIR)/lib$(GLU_LIB).a: $(OBJECTS) 439+ $(MKLIB) -o $(GLU_LIB) -static -linker '$(CXX)' -ldflags '$(LDFLAGS)' \ 440+ -major $(GLU_MAJOR) -minor $(GLU_MINOR) -patch $(GLU_TINY) \ 441+ -cplusplus $(MKLIB_OPTIONS) -install $(TOP)/$(LIB_DIR) \ 442+ -exports glu.exports -id $(INSTALL_LIB_DIR)/lib$(GLU_LIB).$(GLU_MAJOR).dylib \ 443+ $(GLU_LIB_DEPS) $(OBJECTS) 444 445 clean: 446 -rm -f *.o */*.o */*/*.o 447diff -rupN Mesa-7.8.2/src/mesa/glapi/glapi.h Mesa-7.8.2-haiku/src/mesa/glapi/glapi.h 448--- Mesa-7.8.2/src/mesa/glapi/glapi.h 2010-06-15 17:43:43.026214400 +0000 449+++ Mesa-7.8.2-haiku/src/mesa/glapi/glapi.h 2012-01-17 10:51:04.699662336 +0000 450@@ -62,7 +62,7 @@ typedef void (*_glapi_proc)(void); /* ge 451 #endif 452 453 454-#if defined(__GNUC__) 455+#if defined(__GNUC__) && __GNUC__ > 2 456 # define likely(x) __builtin_expect(!!(x), 1) 457 # define unlikely(x) __builtin_expect(!!(x), 0) 458 #else 459