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