diff options
author | joerg <joerg@pkgsrc.org> | 2007-08-06 13:47:38 +0000 |
---|---|---|
committer | joerg <joerg@pkgsrc.org> | 2007-08-06 13:47:38 +0000 |
commit | 0428ea672249a92ae9be55ef034845c57151f199 (patch) | |
tree | 6660a303999e5572f0098c80631c6c03f6a088d7 /graphics/MesaLib | |
parent | 0ddcda33b7089fae596dcb45440e07fdc03b226f (diff) | |
download | pkgsrc-0428ea672249a92ae9be55ef034845c57151f199.tar.gz |
Allow MesaLib to be cross-compiled. This is horrible slow, but working
magic.
Diffstat (limited to 'graphics/MesaLib')
-rw-r--r-- | graphics/MesaLib/distinfo | 4 | ||||
-rw-r--r-- | graphics/MesaLib/files/gen_matypes.awk | 31 | ||||
-rw-r--r-- | graphics/MesaLib/files/gen_matypes.sh | 98 | ||||
-rw-r--r-- | graphics/MesaLib/patches/patch-ca | 18 | ||||
-rw-r--r-- | graphics/MesaLib/patches/patch-cb | 15 |
5 files changed, 165 insertions, 1 deletions
diff --git a/graphics/MesaLib/distinfo b/graphics/MesaLib/distinfo index 857a4da917d..db951ea781a 100644 --- a/graphics/MesaLib/distinfo +++ b/graphics/MesaLib/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.45 2007/04/13 09:12:02 tnn Exp $ +$NetBSD: distinfo,v 1.46 2007/08/06 13:47:38 joerg Exp $ SHA1 (Mesa-6.4.2/MesaDemos-6.4.2.tar.bz2) = 35b1ff78fc1bd1c303be754ad2ff4252ad6c0258 RMD160 (Mesa-6.4.2/MesaDemos-6.4.2.tar.bz2) = 82e1dafd39abbe1c0e1de49adcff00dec19c6c1a @@ -22,3 +22,5 @@ SHA1 (patch-aj) = a805947e1aaf73a798fd3a8c6e39bf1bd62afc3a SHA1 (patch-ak) = 9f3480d08d2b6b7048b018956c57ad6e5d253174 SHA1 (patch-al) = 8ccbc370bc52882ee72ba76b72a99f163f7b89a7 SHA1 (patch-am) = a7a40d0d1f371cfa312ae504582ce0521172f85c +SHA1 (patch-ca) = 5a40dba087b59711778f499b084a2b818b779320 +SHA1 (patch-cb) = 31b4358e171042608a017f4dc98d44f35fcdce70 diff --git a/graphics/MesaLib/files/gen_matypes.awk b/graphics/MesaLib/files/gen_matypes.awk new file mode 100644 index 00000000000..bc267f0ccc7 --- /dev/null +++ b/graphics/MesaLib/files/gen_matypes.awk @@ -0,0 +1,31 @@ +# $NetBSD: gen_matypes.awk,v 1.1 2007/08/06 13:47:39 joerg Exp $ + +BEGIN { + while (getline) { + if (/int main/) break; + } +} + +/printf/ { + printf("printf %s\n", substr($0, 12, length($0) - 14)) +} +/OFFSET\(/ { + split(substr($0,12, length($0) - 14), offsets, ","); + printf("offset %s \"%s\" \"%s\"\n", offsets[1], offsets[2], offsets[3]); +} +/OFFSET_HEADER/ { + printf("offset_header %s\n", substr($0,19, length($0) - 21)) +} + +/DEFINE\(/ { + split(substr($0,12, length($0) - 14), offsets, ","); + printf("define %s \"%s\"\n", offsets[1], offsets[2]); +} +/DEFINE_HEADER/ { + printf("define_header %s\n", substr($0,19, length($0) - 21)) +} + +/SIZEOF\(/ { + split(substr($0,12, length($0) - 14), offsets, ","); + printf("sizeof %s \"%s\"\n", offsets[1], offsets[2]); +} diff --git a/graphics/MesaLib/files/gen_matypes.sh b/graphics/MesaLib/files/gen_matypes.sh new file mode 100644 index 00000000000..193be8026bd --- /dev/null +++ b/graphics/MesaLib/files/gen_matypes.sh @@ -0,0 +1,98 @@ +#!/bin/sh +# +# $NetBSD: gen_matypes.sh,v 1.1 2007/08/06 13:47:39 joerg Exp $ + +test_condition() { + cat > gen_matypes_cross.c << EOF +#include "main/glheader.h" +#include "main/mtypes.h" +#include "tnl/t_context.h" + +#undef offsetof +#define offsetof( type, member ) ((size_t) &((type *)0)->member) + +int test_variable[($1) ? 1 : -1]; +EOF + ${CC} -c -o /dev/null ${CFLAGS} gen_matypes_cross.c > /dev/null 2>&1 +} + +compute_powers(){ + local cur + local i + cur=1 + i=1 + while [ ${i} -le 16 ]; do + power_of_two="${cur} ${power_of_two}" + cur=`expr ${cur} + ${cur}` + i=`expr ${i} + 1` + done +} + +compute_powers + +offset() { + local got_mismatch + local bits + local o + o=0 + got_mismatch=0 + for bits in ${power_of_two}; do + if test_condition "offsetof($2, $3) >= $o + $bits"; then + o=`expr $o + $bits` + else + got_mismatch=1 + fi + done + [ "$got_mismatch" = 0 ] && exit 1 + printf "#define %s\t%d\n" "$1" $o +} + +offset_header() { + printf "\n" + printf "\n" + printf "/* =============================================================\n" + printf " * Offsets for %s\n" "$1" + printf " */\n" + printf "\n" +} + +define_header() { + printf "\n" + printf "/*\n" + printf " * Flags for %s\n" "$1" + printf " */\n" + printf "\n" +} + +define() { + local bits + local v + v=0 + for bits in ${power_of_two}; do + if test_condition "$2 >= $v + $bits"; then + v=`expr $v + $bits` + fi + done + printf "#define %s\t0x%x\n" "$1" $v +} + +sizeof() { + local got_mismatch + local bits + local v + v=0 + got_mismatch=0 + for bits in ${power_of_two}; do + if test_condition "sizeof($2) >= $v + $bits"; then + v=`expr $v + $bits` + else + got_mismatch=1 + fi + done + [ "$got_mismatch" = 0 ] && exit 1 + printf "#define %s\t0x%x\n" "$1" $v +} + +awk -f gen_matypes.awk < gen_matypes.c > gen_matypes_tmp.sh +. ./gen_matypes_tmp.sh +rm gen_matypes_tmp.sh diff --git a/graphics/MesaLib/patches/patch-ca b/graphics/MesaLib/patches/patch-ca new file mode 100644 index 00000000000..fbb360d4b07 --- /dev/null +++ b/graphics/MesaLib/patches/patch-ca @@ -0,0 +1,18 @@ +$NetBSD: patch-ca,v 1.1 2007/08/06 13:47:39 joerg Exp $ + +--- src/mesa/x86/Makefile.orig 2007-08-06 05:42:04.000000000 +0200 ++++ src/mesa/x86/Makefile +@@ -24,8 +24,13 @@ gen_matypes: gen_matypes.c + $(CC) $(INCLUDE_DIRS) $(CFLAGS) gen_matypes.c -o gen_matypes + + # need some special rules here, unfortunately ++.if defined(CROSS_COMPILING) ++matypes.h: ../main/mtypes.h ../tnl/t_context.h gen_matypes.c ++ CFLAGS="${INCLUDE_DIRS} ${CFLAGS}" ./gen_matypes.sh > matypes.h ++.else + matypes.h: ../main/mtypes.h ../tnl/t_context.h gen_matypes + ./gen_matypes > matypes.h ++.endif + + common_x86_asm.o: matypes.h + 3dnow_normal.o: matypes.h diff --git a/graphics/MesaLib/patches/patch-cb b/graphics/MesaLib/patches/patch-cb new file mode 100644 index 00000000000..27d6d0c8a0e --- /dev/null +++ b/graphics/MesaLib/patches/patch-cb @@ -0,0 +1,15 @@ +$NetBSD: patch-cb,v 1.1 2007/08/06 13:47:39 joerg Exp $ + +--- src/mesa/x86-64/Makefile.orig 2007-08-06 05:47:48.000000000 +0200 ++++ src/mesa/x86-64/Makefile +@@ -23,7 +23,8 @@ clean: + + + # need some special rules here, unfortunately +-matypes.h: ../main/mtypes.h ../tnl/t_context.h ../x86/gen_matypes +- ../x86/gen_matypes | grep -v '#include "assyntax.h' > matypes.h ++matypes.h: ../main/mtypes.h ../tnl/t_context.h ../x86/matypes.h ++ cd ../x86 && ${MAKE} matypes.h ++ grep -v '#include "assyntax.h' < ../x86/matypes.h > matypes.h + + xform4.o: matypes.h |