1 | #!/bin/bash
|
---|
2 | # Mesa-O-Matic
|
---|
3 | # Copyright 2011-2013, Alexander von Gluck IV
|
---|
4 | # Released under the terms of the MIT license
|
---|
5 |
|
---|
6 | # This script creates an optional package containing the
|
---|
7 | # the headers and binary code needed by the opengl kit
|
---|
8 | # to link libGL.so and the OpenGL add-ons
|
---|
9 |
|
---|
10 | # This script is run against a *COMPILED* Mesa source tree
|
---|
11 |
|
---|
12 | echo " Welcome to Mesa-O-Matic!"
|
---|
13 | echo "-=-=-=-=-=-=-=-=-=-=-=-=-="
|
---|
14 | echo ""
|
---|
15 |
|
---|
16 | if [[ $DEBUG -eq 1 ]]; then
|
---|
17 | echo "Debugging: enabled"
|
---|
18 | else
|
---|
19 | echo "Debugging: disabled"
|
---|
20 | fi
|
---|
21 |
|
---|
22 | #######################################################################
|
---|
23 | # END CONFIG DATA, Dragons below!
|
---|
24 | #######################################################################
|
---|
25 |
|
---|
26 | function piraterepack {
|
---|
27 | # Ar. Ye be a hack.
|
---|
28 | # Provided a list of .a's, repack them together
|
---|
29 | PACKTMP=/tmp/repack
|
---|
30 | rm -rf $PACKTMP
|
---|
31 | mkdir $PACKTMP
|
---|
32 | for i in $1
|
---|
33 | do
|
---|
34 | if [[ "$1" = /* ]]
|
---|
35 | then
|
---|
36 | # Absolute path
|
---|
37 | cp $i $PACKTMP/ ;
|
---|
38 | else
|
---|
39 | find . -name "$i" -exec cp "{}" $PACKTMP/ \;
|
---|
40 | fi
|
---|
41 | done
|
---|
42 | cd $PACKTMP
|
---|
43 | find . -name "*.a" -exec ar x "{}" \;
|
---|
44 | rm *.a
|
---|
45 | ar rcs $2 *
|
---|
46 | cd -
|
---|
47 | cp $PACKTMP/$2 ./build/
|
---|
48 | rm -rf $PACKTMP
|
---|
49 | }
|
---|
50 |
|
---|
51 | if [[ $( uname ) != "Haiku" ]]; then
|
---|
52 | echo "*************************************"
|
---|
53 | echo " I need to be run on a Haiku system!!"
|
---|
54 | echo "*************************************"
|
---|
55 | exit 1
|
---|
56 | fi
|
---|
57 |
|
---|
58 | if [[ -z $1 ]]; then
|
---|
59 | echo ""
|
---|
60 | echo "Usage: $0 <mesa version> <compiled mesa location>"
|
---|
61 | echo ""
|
---|
62 | exit 1
|
---|
63 | fi
|
---|
64 |
|
---|
65 | MESA_VER="$1"
|
---|
66 | MESA_TOP="$2"
|
---|
67 | GCC_VER=`gcc -v 2>&1 | tail -1 | awk '{print $3}' | cut -d. -f1`
|
---|
68 | DATESTAMP=`date +"%Y-%m-%d"`
|
---|
69 |
|
---|
70 | echo "Bundling gcc$GCC_VER build of Mesa $MESA_VER..."
|
---|
71 |
|
---|
72 | cd $MESA_TOP
|
---|
73 |
|
---|
74 | #######################################################################
|
---|
75 | # Create Mesa optional pacakge
|
---|
76 | ZIP_HEADERS=""
|
---|
77 | echo "Collecting Mesa headers..."
|
---|
78 | for i in $(find . -name "*.h")
|
---|
79 | do
|
---|
80 | ZIP_HEADERS="$ZIP_HEADERS $i"
|
---|
81 | done
|
---|
82 |
|
---|
83 | echo "Collecting required Mesa libraries..."
|
---|
84 |
|
---|
85 | rm -rf lib.haiku
|
---|
86 |
|
---|
87 | BASE_LIBS="libglapi.a libmesa.a"
|
---|
88 |
|
---|
89 | if [[ $GCC_VER -ge 4 ]]; then
|
---|
90 | BASE_LIBS="$BASE_LIBS libgallium.a libglsl.a"
|
---|
91 |
|
---|
92 | # Repack the Mesa objects into an easy to digest archives
|
---|
93 | # These bundles are linked into OpenGL add-ons
|
---|
94 |
|
---|
95 | ## llvmpipe bundle
|
---|
96 | LLVM_LIBS=`llvm-config --libfiles engine bitwriter mcjit`
|
---|
97 | piraterepack "$LLVM_LIBS" "swpipe_llvm.a"
|
---|
98 | piraterepack "swpipe_llvm.a libsoftpipe.a libllvmpipe.a" \
|
---|
99 | "swpipe_bundle.a"
|
---|
100 | BASE_LIBS="$BASE_LIBS swpipe_bundle.a"
|
---|
101 |
|
---|
102 | ## r600 bundle
|
---|
103 | ## etc bundle
|
---|
104 | fi
|
---|
105 |
|
---|
106 | mkdir -p lib.haiku
|
---|
107 | for i in $BASE_LIBS
|
---|
108 | do
|
---|
109 | find ./build/ -name "$i" -exec cp -f {} lib.haiku/ \;
|
---|
110 | if [[ $? -ne 0 ]]; then
|
---|
111 | echo "Warning: couldn't locate $i"
|
---|
112 | fi
|
---|
113 | done
|
---|
114 |
|
---|
115 | if [[ $DEBUG -eq 0 ]]; then
|
---|
116 | echo "Stripping debug symbols from Mesa libraries..."
|
---|
117 | find lib.haiku/* -exec strip --strip-debug {} \; ;
|
---|
118 | MESADBG=""
|
---|
119 | else
|
---|
120 | MESADBG="dbg"
|
---|
121 | fi
|
---|
122 |
|
---|
123 | echo "Creating Mesa OptionalPackage..."
|
---|
124 | PLATFORM=$( uname -m )
|
---|
125 | ZIP_FILENAME="/boot/home/mesa-${MESA_VER}-x86${MESADBG}-gcc${GCC_VER}-${DATESTAMP}.zip"
|
---|
126 | zip -r -9 $ZIP_FILENAME $ZIP_HEADERS ./lib.haiku/*
|
---|
127 |
|
---|
128 | echo "Great Success! $ZIP_FILENAME created."
|
---|