1#!/bin/bash 2# Mesa-O-Matic 3# Copyright 2011, Alexander von Gluck IV 4 5# This script creates an optional package containing the 6# the headers and binary code needed by the opengl kit 7# to link libGL.so 8 9# This script is run against a *COMPILED* Mesa source tree 10 11echo " Welcome to Mesa-O-Matic!" 12echo "-=-=-=-=-=-=-=-=-=-=-=-=-=" 13echo "" 14 15# These are the Mesa headers and libraries used by the opengl kit 16# Headers are probed for dependencies, only specify ones referenced 17# by the opengl kit. 18MESA_PRIVATE_HEADERS="glheader.h glapi.h glapitable.h glapitemp.h glapi_priv.h context.h driverfuncs.h meta.h colormac.h buffers.h framebuffer.h renderbuffer.h state.h version.h swrast.h swrast_setup.h tnl.h t_context.h t_pipeline.h vbo.h extensions.h s_spantemp.h s_renderbuffer.h s_context.h formats.h cpuinfo.h" 19 20DEBUG=0 21 22####################################################################### 23# END CONFIG DATA, Dragons below! 24####################################################################### 25 26if [[ $( uname ) != "Haiku" ]]; then 27 echo "*************************************" 28 echo " I need to be run on a Haiku system!!" 29 echo "*************************************" 30 exit 1 31fi 32 33if [[ -z $1 ]]; then 34 echo "" 35 echo "Usage: $0 <compiled mesa location>" 36 echo "" 37 exit 1 38fi 39 40MESA_TOP="$1" 41 42GCC_VER=`gcc -v 2>&1 | tail -1 | awk '{print $3}' | cut -d. -f1` 43MESA_VER=`cat $MESA_TOP/Makefile |grep VERSION\= | cut -d= -f2` 44 45DATESTAMP=`date +"%Y-%m-%d"` 46 47echo "Bundling gcc$GCC_VER build of Mesa $MESA_VER..." 48 49cd $MESA_TOP 50 51####################################################################### 52# Create Mesa optional pacakge 53 54findInTree() { 55 RESULT=`find . -name "$1"` 56 if [[ $? -ne 0 || -z $RESULT ]]; then 57 echo "$i" 58 exit 1 59 fi 60 echo $RESULT 61} 62 63# Directories to search for matching headers 64MESA_INCLUDES="-I./include -I./src -I./src/mapi -I./src/mesa" 65MESA_DEFINES="-DUSE_X86_ASM -DUSE_PPC_ASM -DUSE_SPARC_ASM" 66MESA_DEFINES="$MESA_DEFINES -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -DUSE_X86_64_ASM" 67 68ZIP_HEADERS="" 69echo "Collecting required Mesa private headers..." 70for i in $MESA_PRIVATE_HEADERS 71do 72 FOUND=$(findInTree $i) 73 if [[ $GCC_VER -eq 2 ]]; then 74 # gcc2 isn't very good at -MM 75 setgcc gcc4 76 fi 77 HEADERS_RAW=`gcc -MM $MESA_INCLUDES $MESA_DEFINES $FOUND` 78 if [[ $GCC_VER -eq 2 ]]; then 79 setgcc gcc2 80 fi 81 82 for y in $( echo "$HEADERS_RAW" | cut -d':' -f2 | sed 's/\\//g' | tr -d '\n' ) 83 do 84 CLEAN_HEADER=$( echo "$y" | grep -v "include/GL/" ) 85 ZIP_HEADERS="$ZIP_HEADERS $CLEAN_HEADER" 86 done 87done 88 89echo "Collecting required Mesa libraries..." 90rm -rf lib.haiku 91mkdir -p lib.haiku 92for i in $( find . -name "*.a" ) 93do 94 cp $i lib.haiku/ 95done 96 97if [[ $DEBUG -eq 0 ]]; then 98echo "Stripping debug symbols from Mesa libraries..." 99find lib.haiku -exec strip --strip-debug {} \; ; 100MESADBG="" 101else 102MESADBG="dbg" 103fi 104 105echo "Creating Mesa OptionalPackage..." 106PLATFORM=$( uname -m ) 107ZIP_FILENAME="../mesa-${MESA_VER}${MESADBG}-x86-gcc${GCC_VER}-${DATESTAMP}.zip" 108zip -r -9 $ZIP_FILENAME $ZIP_HEADERS ./include/GL/* ./lib.haiku/* 109 110echo "Great Success! $ZIP_FILENAME created." 111