サイログ。

~雑多な記事置き場~

MinGW+Mesa3D 7.8.2びビルドできたかたはいらっしゃいませんか?

先日のDesktop-M3Gの件で、作者の方コメントで教えていただいた方法でビルド開始…うまいこといくかなと思ったら、

glBindBufferが無いよん

というエラーでトホホ。調べてみると、OpenGL1.5の関数らしい

そいで、MinGWに入っているgl.hを見たら…

OpenGL1.3(Mesa4.0) !!??

そらあかんわ、というわけで、Mesa3Dの最新版を得ることに。

http://www.mesa3d.org/

調べてみると、Mesa3Dの最新版なら使えそうだ。

というわけで、ダウンロードしてビルド。

ところが、configureが使えない。"install-shとか使え"とか出てきてる。
こまったなぁと思っていると、MinGW32でのビルド方法が書かれていた。

cd mesa
mingw32-make.exe -f Makefile.mgw

とやると、確かにビルドが始まったので、ほっとした…のもつかの間。
インクルードファイルが無いとかいいやがる。

調べてみると、shader/slang/libraryディレクトリのファイル名が変わってた。というわけで改名。

(例)
mv slang_common_builtin.gc slang_common_builtin_gc.h

さあ、これで、ビルドできるだろうとおもったら、とんでもない量のエラーが…。

mingw32-gcc -o shader/slang/slang_compile.o -DBUILD_GL32 -D_DLL -DMESA_MINWARN -DNDEBUG -DUSE_EXTERNAL_DXTN_LIB=1 -I../../include -I../../src/mesa -I../../src/gallium/include -I../../src/gallium/auxiliary -c shader/slang/slang_compile.c
In file included from shader/slang/slang_compile.c:2797:
shader/slang/library/slang_core_gc.h:108: error: syntax error before "int"
shader/slang/library/slang_core_gc.h:110: error: `f' undeclared here (not in a function)
shader/slang/library/slang_core_gc.h:110: error: initializer element is not constant
shader/slang/library/slang_core_gc.h:110: error: (near initialization for `slang_core_gc[0]')
shader/slang/library/slang_core_gc.h: In function `__constructor':
shader/slang/library/slang_core_gc.h:120: error: `__retVal' undeclared (first use in this function)
shader/slang/library/slang_core_gc.h:120: error: (Each undeclared identifier is reported only once
shader/slang/library/slang_core_gc.h:120: error: for each function it appears in.)
shader/slang/library/slang_core_gc.h: At top level:
shader/slang/library/slang_core_gc.h:123: error: syntax error before "__constructor"
shader/slang/library/slang_core_gc.h:124: error: redefinition of '__constructor'
shader/slang/library/slang_core_gc.h:119: error: previous definition of '__constructor' was here
shader/slang/library/slang_core_gc.h: In function `__constructor':
shader/slang/library/slang_core_gc.h:125: error: syntax error before "vec4_sne"
shader/slang/library/slang_core_gc.h: At top level:
shader/slang/library/slang_core_gc.h:128: error: syntax error before "__constructor"
shader/slang/library/slang_core_gc.h:129: error: conflicting types for '__constructor'
shader/slang/library/slang_core_gc.h:124: error: previous definition of '__constructor' was here
shader/slang/library/slang_core_gc.h:129: error: conflicting types for '__constructor'
shader/slang/library/slang_core_gc.h:124: error: previous definition of '__constructor' was here
shader/slang/library/slang_core_gc.h: In function `__constructor':
shader/slang/library/slang_core_gc.h:130: error: syntax error before "vec4_sne"
shader/slang/library/slang_core_gc.h: At top level:
shader/slang/library/slang_core_gc.h:133: error: syntax error before "__constructor"
shader/slang/library/slang_core_gc.h:133: error: syntax error before "b"
shader/slang/library/slang_core_gc.h:134: error: redefinition of '__constructor'
shader/slang/library/slang_core_gc.h:129: error: previous definition of '__constructor' was here
shader/slang/library/slang_core_gc.h:134: error: conflicting types for '__constructor'
shader/slang/library/slang_core_gc.h:124: error: previous definition of '__constructor' was here
shader/slang/library/slang_core_gc.h: In function `__constructor':
shader/slang/library/slang_core_gc.h:134: error: number of arguments doesn't match prototype
shader/slang/library/slang_core_gc.h:129: error: prototype declaration
shader/slang/library/slang_core_gc.h:135: error: `__retVal' undeclared (first use in this function)
shader/slang/library/slang_core_gc.h:135: error: `b' undeclared (first use in this function)
shader/slang/library/slang_core_gc.h: At top level:
shader/slang/library/slang_core_gc.h:139: error: conflicting types for '__constructor'
shader/slang/library/slang_core_gc.h:134: error: previous definition of '__constructor' was here
shader/slang/library/slang_core_gc.h:139: error: conflicting types for '__constructor'
shader/slang/library/slang_core_gc.h:124: error: previous definition of '__constructor' was here
(...以下延々)

調べてみると、shader/slang/slang_compile.cの中はこうなっていた。

static const unsigned char slang_core_gc[] = {
#include "library/slang_core_gc.h"
};
…

で、shader/slang/library/slang_core_gc.hの中身はこんなん

int __constructor(const float f)
{
   __asm vec4_to_ivec4 __retVal, f;
}

int __constructor(const bool b)
{
   __retVal = b;
}

int __constructor(const int i)
{
   __retVal = i;
}

bool __constructor(const int i)
{
   __asm vec4_sne __retVal, i, 0.0;
}

bool __constructor(const float f)
{
   __asm vec4_sne __retVal, f, 0.0;
}

bool __constructor(const bool b)
{
   __retVal = b;
}

float __constructor(const int i)
{
    __asm ivec4_to_vec4 __retVal, i;
}

なんじゃこりゃ、理解の範囲を超えてしまいました…もうイヤ!!!
どなたか助け船を…OTL