Results 1 to 3 of 3

Thread: Compiling Mesa with LLVM on x86_64 in Windows 7

Hybrid View

  1. #1
    Join Date
    Nov 2010
    Location
    Stockholm, Sweden
    Posts
    424

    Default Compiling Mesa with LLVM on x86_64 in Windows 7

    Hi guys

    I'm trying to compile Mesa with LLVM on Windows 7 (at work). We'd like to use it when running our software over remote desktop. The 32 bit build seems to work, but for some reason I can't get the 64 bit version to build. Any Mesa developers here that can lend me a hand? I'm able to build Mesa without LLVM support by running:
    Code:
    scons.bat build=release llvm=no machine=x86_64
    but if I change llvm=no to llvm=yes I get lots of linker errors. I've built LLVM 3.0 from their git repository, and it should be build in release mode for x86_64. The Mesa I'm using is also from git (head/master).

    The linker errors I get is
    Code:
    Installing build\windows-x86_64\bin\u_cache_test.exe ...
    Installing build\windows-x86_64\bin\u_cache_test.pdb ...
    link /nologo /LTCG /fixed:no /incremental:no /OUT:build\windows-x86_64\gallium\drivers\llvmpipe\lp_test_format.exe /LIBPATH:D:\mesa2\llvm_bin\lib build\windows-x86_64\gallium\drivers\llvmpipe\llvmpipe.lib build\windows-x86_64\gallium\auxiliary\gallium.lib LLVMObject.lib LLVMMCJIT.lib LLVMMCDisassemb
    ler.lib LLVMLinker.lib LLVMipo.lib LLVMInterpreter.lib LLVMInstrumentation.lib LLVMJIT.lib LLVMExecutionEngine.lib LLVMBitWriter.lib LLVMX86Disassembler.lib LLVMX86AsmParser.lib LLVMMCParser.lib LLVMX86AsmPrinter.lib LLVMX86CodeGen.lib LLVMSelectionDAG.lib LLVMX86Utils.lib LLVMX86Info.lib LLVMAsmPri
    nter.lib LLVMCodeGen.lib LLVMScalarOpts.lib LLVMInstCombine.lib LLVMTransformUtils.lib LLVMipa.lib LLVMAsmParser.lib LLVMArchive.lib LLVMBitReader.lib LLVMAnalysis.lib LLVMTarget.lib LLVMCore.lib LLVMMC.lib LLVMSupport.lib imagehlp.lib psapi.lib shell32.lib advapi32.lib /PDB:build\windows-x86_64\gal
    lium\drivers\llvmpipe\lp_test_format.pdb /DEBUG build\windows-x86_64\gallium\drivers\llvmpipe\lp_test_format.obj build\windows-x86_64\gallium\drivers\llvmpipe\lp_test_main.obj
    Installing build\windows-x86_64\bin\pipe_barrier_test.pdb ...
    Installing build\windows-x86_64\bin\pipe_barrier_test.exe ...
    link /nologo /LTCG /fixed:no /incremental:no /OUT:build\windows-x86_64\gallium\drivers\llvmpipe\lp_test_printf.exe /LIBPATH:D:\mesa2\llvm_bin\lib build\windows-x86_64\gallium\drivers\llvmpipe\llvmpipe.lib build\windows-x86_64\gallium\auxiliary\gallium.lib LLVMObject.lib LLVMMCJIT.lib LLVMMCDisassemb
    ler.lib LLVMLinker.lib LLVMipo.lib LLVMInterpreter.lib LLVMInstrumentation.lib LLVMJIT.lib LLVMExecutionEngine.lib LLVMBitWriter.lib LLVMX86Disassembler.lib LLVMX86AsmParser.lib LLVMMCParser.lib LLVMX86AsmPrinter.lib LLVMX86CodeGen.lib LLVMSelectionDAG.lib LLVMX86Utils.lib LLVMX86Info.lib LLVMAsmPri
    nter.lib LLVMCodeGen.lib LLVMScalarOpts.lib LLVMInstCombine.lib LLVMTransformUtils.lib LLVMipa.lib LLVMAsmParser.lib LLVMArchive.lib LLVMBitReader.lib LLVMAnalysis.lib LLVMTarget.lib LLVMCore.lib LLVMMC.lib LLVMSupport.lib imagehlp.lib psapi.lib shell32.lib advapi32.lib /PDB:build\windows-x86_64\gal
    lium\drivers\llvmpipe\lp_test_printf.pdb /DEBUG build\windows-x86_64\gallium\drivers\llvmpipe\lp_test_printf.obj build\windows-x86_64\gallium\drivers\llvmpipe\lp_test_main.obj
    msvcprt.lib(MSVCP100.dll) : error LNK2005: "void __cdecl std::_Xlength_error(char const *)" (?_Xlength_error@std@@YAXPEBD@Z) already defined in libcpmt.lib(xthrow.obj)
    msvcprt.lib(MSVCP100.dll) : error LNK2005: "void __cdecl std::_Xout_of_range(char const *)" (?_Xout_of_range@std@@YAXPEBD@Z) already defined in libcpmt.lib(xthrow.obj)
    msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: virtual __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::~basic_streambuf<char,struct std::char_traits<char> >(void)" (??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ) already defined in libcpmt.lib(cout.obj)
    msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::basic_streambuf<char,struct std::char_traits<char> >(void)" (??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ) already defined in libcpmt.lib(cout.obj)
    msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: void __cdecl std::basic_ios<char,struct std::char_traits<char> >::setstate(int,bool)" (?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z) already defined in libcpmt.lib(cout.obj)
    msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: char * __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::_Pninc(void)" (?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ) already defined in libcpmt.lib(cout.obj)
    msvcprt.lib(MSVCP100.dll) : error LNK2005: "private: static void __cdecl std::ios_base::_Ios_base_dtor(class std::ios_base *)" (?_Ios_base_dtor@ios_base@std@@CAXPEAV12@@Z) already defined in libcpmt.lib(ios.obj)
    msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: __cdecl std::basic_ostream<char,struct std::char_traits<char> >::basic_ostream<char,struct std::char_traits<char> >(class std::basic_streambuf<char,struct std::char_traits<char> > *,bool)" (??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?
    $basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z) already defined in libcpmt.lib(cout.obj)
    msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: __cdecl std::basic_ios<char,struct std::char_traits<char> >::basic_ios<char,struct std::char_traits<char> >(void)" (??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ) already defined in libcpmt.lib(cout.obj)
    msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: virtual __cdecl std::basic_ios<char,struct std::char_traits<char> >::~basic_ios<char,struct std::char_traits<char> >(void)" (??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ) already defined in libcpmt.lib(cout.obj)
    msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: void __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::setg(char *,char *,char *)" (?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z) already defined in libcpmt.lib(cout.obj)
    msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: __cdecl std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QEAA@XZ) already defined in libcpmt.lib(xlock.obj)
    msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: __cdecl std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QEAA@H@Z) already defined in libcpmt.lib(xlock.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: _invoke_watson already defined in LIBCMT.lib(invarg.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: memmove already defined in LIBCMT.lib(memcpy.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: malloc already defined in LIBCMT.lib(malloc.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: free already defined in LIBCMT.lib(free.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: exit already defined in LIBCMT.lib(crt0dat.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: tolower already defined in LIBCMT.lib(tolower.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: isdigit already defined in LIBCMT.lib(_ctype.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: atoi already defined in LIBCMT.lib(atox.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: abort already defined in LIBCMT.lib(abort.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: getenv already defined in LIBCMT.lib(getenv.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: realloc already defined in LIBCMT.lib(realloc.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: strcspn already defined in LIBCMT.lib(strcspn.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: _errno already defined in LIBCMT.lib(dosmap.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: fclose already defined in LIBCMT.lib(fclose.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: fwrite already defined in LIBCMT.lib(fwrite.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: fopen already defined in LIBCMT.lib(fopen.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: isspace already defined in LIBCMT.lib(_ctype.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: strncmp already defined in LIBCMT.lib(strncmp.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: isprint already defined in LIBCMT.lib(_ctype.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: isalnum already defined in LIBCMT.lib(_ctype.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: isalpha already defined in LIBCMT.lib(_ctype.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: isupper already defined in LIBCMT.lib(_ctype.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: _stricmp already defined in LIBCMT.lib(stricmp.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: _strdup already defined in LIBCMT.lib(strdup.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: calloc already defined in LIBCMT.lib(calloc.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: strchr already defined in LIBCMT.lib(strchr.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: _exit already defined in LIBCMT.lib(crt0dat.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: fputs already defined in LIBCMT.lib(fputs.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: fprintf already defined in LIBCMT.lib(fprintf.obj)
    MSVCRT.lib(MSVCR100.dll) : error LNK2005: __iob_func maslvrcepardty. ldiebf(iMnSeVdC Pi1n0 0L.IdBlClM)T .:l iebr(r_ofri lLeN.Ko2b0j0)5
    :MSVCR T".vloiibd( M_S_VcCdRe1c0l0 .sdtldl:): _:X leernrgotrh _LeNrKr2o0r0(5c:h a_rg ecto_nosstf h*a)n"d l(e? _aXllreenagdtyh _deerfrionre@ds tidn@ @LYIABXCPMETB.Dl@iZb)( oaslfrienafdoy. odbejf)i
    nedM SiVnC RlTi.blcipbm(tM.SlViCbR(1x0t0h.rdolwl.)o b:j )e
    rromrs vLcNpKr2t0.0l5i:b (sMStVrCpPb1r0k0 .adllrle)a d:y  edrerfoirn eLdN Ki2n0 0L5I:B C"MvTo.ildi b_(_sctdrepcblr ks.todb:j:)_
    XoMuStV_CoRfT_.rlainbg(eM(ScVhCaRr1 0c0o.ndsltl )* ):"  e(r?r_oXro uLtN_Ko2f0_0r5a:n g_es@esttmdo@d@eY AaXlPrEeBaDd@yZ )d eaflirneeadd yi nd eLfIiBnCeMdT .ilni bl(isbectpmmotd.el.iobb(jx)t
    hrMoSwV.CoRbTj.)l
    ib(MSVCR10m0s.vdclplr)t .:l iebr(rMoSrV CLPN1K0200.0d5l:l )_ f:i leernroo ra lLrNeKa2d0y0 5d:e f"mipsnuvebcdlp irictn:.  lLviIibBr(CtMMuSTaV.lCl Pi_1b_0(c0fd.iedlclelln )os .t:od b:ej:r)br
    aosMriS cVL_CNsRKtT2r.0el0ai5mb:b(uMfS<V cC"hRva1or0i,0ds. td_rl_ulcc)dt e :cs lte drs:rt:odcr:h :aL_rNX_Klt2er0na0gi5tt:hs _<fecfrhlrauorsr>h(  c>ah:la:rr~e bacadosyni scdt_e sf*ti)rn"ee ad(m ?bi_unXf l<LecInhBgaCtrMh,T_s.etlrriruboc(rtf@ fsslttudds@:h@:.YcoAhbXajPr)E_
    BtDr@MaZSi)Vt CsaR<lTcr.helaairdb>y(  M>dS(eVvfCoiRin1de0)d0" . id(nl? l?l)1i ?b:$c bpeamrstri.oclr_i sbLt(NrxKet2ah0mr0bo5uw:f. @o_DbcUjh?)s$
    iczhema_srsv_ ctaprlrartie.talsdi@ybD (@dMseStfVdiC@nP@e1@d0s 0ti.dnd@ l@LlUI)EB AC:AM @TeX.rZlr)io bra( lcLrhNesKai2dz0ye0 .5do:eb fj"i)vn
    oeiddM  Si_Vn_C cRldTie.bclclip bms(ttM.dSl:Vi:Cb_R(X1co0ou0ut.t_d.oloflb_)jr )a:
    ...
    ...
    ...
    More weird output (I think several threads are writing to standard output at the same time).
    ...
    ...
    ...
    eeng.ll.ilbi(bX(8e6gSluabptia.rogbejt). o:b jw)a r:n ienrgr oLrN KL4N1K9270:0 1e:x puonrrte s'oelgvleIdn ietxitaelrinzael'  ssypmebcoilf i"ebdo omlu l_t_icpdleec lt ilmlevsm;: :uXs8i6n_gM Cf:i:rGsett CsppueIcDiAfnidcIantfioo(nu
    nesgilg.nleidb (iengtl,aupnis.iogbnje)d  :i nwta r*n,iunngs iLgNnKe4d1 9i7n:t  e*x,puonrsti g'neegdl GienttD i*s,pulnasyi'g nsepde ciinfti e*d) "m u(l?tGieptlCep utIiDmAensd;I nufsoi@nXg8 6f_iMrCs@tl lsvpme@c@iYfAi_cNaItPiEoAnI
    000@Z)
    build\windows-x86_64\gallium\drivers\llvmpipe\lp_test_format.exe : fatal error LNK1120: 11 unresolved externals
    scons: *** [build\windows-x86_64\gallium\drivers\llvmpipe\lp_test_format.exe] Error 1120
       Creating library build\windows-x86_64\gallium\targets\egl-static\libEGL.lib and object build\windows-x86_64\gallium\targets\egl-static\libEGL.exp
    LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
    gallium.lib(lp_bld_init.obj) : error LNK2001: unresolved external symbol LLVMInitializeX86TargetMC
    LLVMX86CodeGen.lib(X86InstrInfo.obj) : error LNK2001: unresolved external symbol "class llvm::MCInstrDesc * llvm::X86Insts" (?X86Insts@llvm@@3PAVMCInstrDesc@1@A)
    LLVMX86CodeGen.lib(X86RegisterInfo.obj) : error LNK2001: unresolved external symbol "class llvm::MCRegisterClass * llvm::X86MCRegisterClasses" (?X86MCRegisterClasses@llvm@@3PAVMCRegisterClass@1@A)
    LLVMX86CodeGen.lib(X86RegisterInfo.obj) : error LNK2001: unresolved external symbol "unsigned int __cdecl llvm::X86_MC::getX86RegNum(unsigned int)" (?getX86RegNum@X86_MC@llvm@@YAII@Z)
    LLVMX86CodeGen.lib(X86CodeEmitter.obj) : error LNK2001: unresolved external symbol "unsigned int __cdecl llvm::X86_MC::getX86RegNum(unsigned int)" (?getX86RegNum@X86_MC@llvm@@YAII@Z)
    LLVMX86CodeGen.lib(X86ISelLowering.obj) : error LNK2001: unresolved external symbol "unsigned int __cdecl llvm::X86_MC::getX86RegNum(unsigned int)" (?getX86RegNum@X86_MC@llvm@@YAII@Z)
    LLVMX86CodeGen.lib(X86RegisterInfo.obj) : error LNK2001: unresolved external symbol "struct llvm::MCRegisterDesc * llvm::X86RegDesc" (?X86RegDesc@llvm@@3PAUMCRegisterDesc@1@A)
    LLVMX86CodeGen.lib(X86RegisterInfo.obj) : error LNK2001: unresolved external symbol "void __cdecl llvm::X86_MC::InitLLVM2SEHRegisterMapping(class llvm::MCRegisterInfo *)" (?InitLLVM2SEHRegisterMapping@X86_MC@llvm@@YAXPEAVMCRegisterInfo@2@@Z)
    LLVMX86CodeGen.lib(X86RegisterInfo.obj) : error LNK2001: unresolved external symbol "unsigned int __cdecl llvm::X86_MC::getDwarfRegFlavour(class llvm::StringRef,bool)" (?getDwarfRegFlavour@X86_MC@llvm@@YAIVStringRef@2@_N@Z)
    LLVMX86CodeGen.lib(X86Subtarget.obj) : error LNK2001: unresolved external symbol "struct llvm::SubtargetFeatureKV * llvm::X86FeatureKV" (?X86FeatureKV@llvm@@3PAUSubtargetFeatureKV@1@A)
    LLVMX86CodeGen.lib(X86Subtarget.obj) : error LNK2001: unresolved external symbol "struct llvm::SubtargetFeatureKV * llvm::X86SubTypeKV" (?X86SubTypeKV@llvm@@3PAUSubtargetFeatureKV@1@A)
    LLVMX86CodeGen.lib(X86Subtarget.obj) : error LNK2001: unresolved external symbol "void __cdecl llvm::X86_MC::DetectFamilyModel(unsigned int,unsigned int &,unsigned int &)" (?DetectFamilyModel@X86_MC@llvm@@YAXIAEAI0@Z)
    LLVMX86CodeGen.lib(X86Subtarget.obj) : error LNK2001: unresolved external symbol "bool __cdecl llvm::X86_MC::GetCpuIDAndInfo(unsigned int,unsigned int *,unsigned int *,unsigned int *,unsigned int *)" (?GetCpuIDAndInfo@X86_MC@llvm@@YA_NIPEAI000@Z)
    build\windows-x86_64\gallium\targets\egl-static\libEGL.dll : fatal error LNK1120: 11 unresolved externals
    scons: *** [build\windows-x86_64\gallium\targets\egl-static\libEGL.dll] Error 1120
    Finished generating code
    Finished generating code
    scons: building terminated because of errors.

  2. #2
    Join Date
    Nov 2010
    Location
    Stockholm, Sweden
    Posts
    424

    Default

    No info/help from any mesa devs? Pleeeeeaaaseeeee...

  3. #3
    Join Date
    Nov 2010
    Location
    Stockholm, Sweden
    Posts
    424

    Default

    I found out how to get it working with LLVM3.2 and Mesa 9.1, and have a script with patches for it, etc. There's a batch script which does most of the job, including getting repositories via git, etc.. Just copy the script, the config.py and the patch (pasted into a file called patches_against_mesa_9.1git.patch) into some directory, and it "should" build everything for you. Then find the file called opengl32.dll and copy it to where you need it to be.

    Code:
    @echo off
    setlocal enabledelayedexpansion
    
    rem Get and build needed parts of Mesa stack (X11 drivers)
    set HOME=%cd%
    set MSBUILD=%WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
    rem multi-core compile
    set MAKEFLAGS=-j7 
    call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat"
    
    set USE_LLVM="yes"
    set USE_CLANG="no"
    
    if %USE_LLVM%=="yes" (
    	rem Get and Build LLVM
    	cd %HOME%
    	mkdir llvm
    	cd llvm
    	mkdir build
    	if not exist !cd!\llvm (
    		call git clone http://llvm.org/git/llvm.git
    		cd llvm
    	) else (
    		cd llvm
    		call git pull --rebase
    	)
    	cd tools
    	if %USE_CLANG%=="yes" (
    		if not exist !cd!\clang (
    			call git clone http://llvm.org/git/clang.git
    			cd ..\..\build
    		) else (
    			cd clang
    			call git pull
    			cd ..\..\..\build
    		)
    	) else (
    		cd ..\..\build
    	)
    	call cmake -G "Visual Studio 10 Win64" ..\llvm
    	set MSBUILD="%WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"
    	call !MSBUILD! LLVM.sln /nologo /m:7 /property:Configuration=Release
    	set LLVM_TARGET=llvm_bin
    	set LLVM=%HOME%\!LLVM_TARGET!
    	mkdir !LLVM!
    	mkdir !LLVM!\bin
    	mkdir !LLVM!\lib
    	mkdir !LLVM!\include\llvm
    	xcopy /Y bin\Release\*.* !LLVM!\bin\
    	xcopy /Y lib\Release\*.* !LLVM!\lib\
    	xcopy /Y /S include\llvm !LLVM!\include\llvm\
    	cd %HOME%\llvm
    	xcopy /Y /S build\!LLVM_TARGET! !LLVM!
    	xcopy /Y /S llvm\include !LLVM!\include\
    	echo LLVM set to !LLVM!
    )
    
    rem Build mesa
    if (%USE_LLVM%=="yes") (
    	if not exist !LLVM! (
    		echo "LLVM environment variable not set!"
    		goto fail
    	)
    )
    cd %HOME%
    rem git:// doesn't work (probably because of firewall. Use http for now (or forever)
    if not exist %HOME%\mesa\.git\ (
    	call git clone http://anongit.freedesktop.org/git/mesa/mesa.git
    	xcopy /Y *.patch mesa\
    	xcopy /Y config.py mesa\
    	cd mesa
    ) else (
    	xcopy /Y *.patch mesa\
    	cd mesa
    	call git pull origin master
    )
    call git apply patches_against_mesa_9.1git.patch
    echo LLVM environment variable set to !LLVM!
    call scons.bat -j 8 build=release llvm=%USE_LLVM% machine=x86_64 mesa gallium opengl32
    goto:EOF
    
    :fail
    echo "Script finished with an error"
    and here's the config.py that needs to be copied into the build directory (which the script does):
    Code:
    # config.py
    build='release'
    llvm=True
    machine='x86_64'
    platform='windows'
    texture_float=True
    msvc=True
    MSVC_VERSION='10.0',
    targets="mesa gallium opengl32"
    and here's the patch we need to get it to build with LLVM (since the CCFLAG needs to be changed to /MD). Only the "gallium.py" patch is really needed for getting it to build, so you can do that by hand and disregard the other parts if you want to:
    Code:
    diff --git a/scons/gallium.py b/scons/gallium.py
    index c3f33a0..bbd423b 100755
    --- a/scons/gallium.py
    +++ b/scons/gallium.py
    @@ -439,10 +439,10 @@ def generate(env):
             # Choose the appropriate MSVC CRT
             # http://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx
             if env['build'] in ('debug', 'checked'):
    -            env.Append(CCFLAGS = ['/MTd'])
    +            env.Append(CCFLAGS = ['/MDd'])
                 env.Append(SHCCFLAGS = ['/LDd'])
             else:
    -            env.Append(CCFLAGS = ['/MT'])
    +            env.Append(CCFLAGS = ['/MD'])
                 env.Append(SHCCFLAGS = ['/LD'])
         
         # Assembler options
    diff --git a/src/gallium/drivers/llvmpipe/lp_limits.h b/src/gallium/drivers/llvmpipe/lp_limits.h
    index 3be24d6..051859b 100644
    --- a/src/gallium/drivers/llvmpipe/lp_limits.h
    +++ b/src/gallium/drivers/llvmpipe/lp_limits.h
    @@ -45,7 +45,7 @@
      */
     #define LP_MAX_TEXTURE_SIZE (1 * 1024 * 1024 * 1024ULL)  /* 1GB for now */
     #define LP_MAX_TEXTURE_2D_LEVELS 14  /* 8K x 8K for now */
    -#define LP_MAX_TEXTURE_3D_LEVELS 11  /* 1K x 1K x 1K for now */
    +#define LP_MAX_TEXTURE_3D_LEVELS 15  /* 1K x 1K x 1K for now */
     #define LP_MAX_TEXTURE_CUBE_LEVELS 13  /* 4K x 4K for now */
     
     
    diff --git a/src/gallium/drivers/softpipe/sp_limits.h b/src/gallium/drivers/softpipe/sp_limits.h
    index 9dd2be1..0c07ea7 100644
    --- a/src/gallium/drivers/softpipe/sp_limits.h
    +++ b/src/gallium/drivers/softpipe/sp_limits.h
    @@ -31,7 +31,7 @@
     
     #define SP_MAX_TEXTURE_SIZE (1 * 1024 * 1024 * 1024ULL)  /* 1GB for now */
     #define SP_MAX_TEXTURE_2D_LEVELS 15  /* 16K x 16K */
    -#define SP_MAX_TEXTURE_3D_LEVELS 9   /* 256 x 256 x 256 */
    +#define SP_MAX_TEXTURE_3D_LEVELS 15  /* 16K x 16K */
     #define SP_MAX_TEXTURE_CUBE_LEVELS 13  /* 4K x 4K */
     
     
    diff --git a/src/mesa/program/prog_instruction.h b/src/mesa/program/prog_instruction.h
    index 656556d..34d6540 100644
    --- a/src/mesa/program/prog_instruction.h
    +++ b/src/mesa/program/prog_instruction.h
    @@ -247,7 +247,7 @@ typedef enum prog_opcode {
      * Number of bits for the src/dst register Index field.
      * This limits the size of temp/uniform register files.
      */
    -#define INST_INDEX_BITS 12
    +#define INST_INDEX_BITS 15
     
     
     /**

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •