[haiku-commits] haiku: hrev45149 - src/add-ons/opengl/swpipe build/jam

  • From: kallisti5@xxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 11 Jan 2013 07:55:38 +0100 (CET)

hrev45149 adds 2 changesets to branch 'master'
old head: 524bb6d3ec20b00a4d5c7035eb7ca97a09c9c94e
new head: 414ba3b2a3e6df1ef9a177472ca18c59500bdc3e
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=414ba3b+%5E524bb6d

----------------------------------------------------------------------------

4c3d44f: llvm: Add LLVM build feature

414ba3b: swpipe: Make swpipe properly use llvm
  
  * It should build now for most gcc4 folks
  * Not in image yet
  * Still is kind of crashy

                          [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ]

----------------------------------------------------------------------------

2 files changed, 155 insertions(+), 115 deletions(-)
build/jam/BuildFeatures           | 113 ++++++++++++++++++++++++
src/add-ons/opengl/swpipe/Jamfile | 157 +++++++++-------------------------

############################################################################

Commit:      4c3d44f1ddd46732e0da5f1e19bd199c6208ead3
URL:         http://cgit.haiku-os.org/haiku/commit/?id=4c3d44f
Author:      Alexander von Gluck IV <kallisti5@xxxxxxxxxxx>
Date:        Fri Jan 11 06:44:01 2013 UTC

llvm: Add LLVM build feature

----------------------------------------------------------------------------

diff --git a/build/jam/BuildFeatures b/build/jam/BuildFeatures
index fa806de..46062fc 100644
--- a/build/jam/BuildFeatures
+++ b/build/jam/BuildFeatures
@@ -203,6 +203,118 @@ if $(HAIKU_BUILD_FEATURE_CLUCENE) {
 }
 
 
+# LLVM
+if $(TARGET_ARCH) = x86 {
+       if $(HAIKU_GCC_VERSION[1]) >= 4 {
+               HAIKU_LLVM_FILE = llvm-3.2-x86-gcc4-2012-12-21.zip ;
+               local zipFile = [ DownloadFile $(HAIKU_LLVM_FILE)
+                       : $(baseURL)/$(HAIKU_LLVM_FILE) ] ;
+
+               HAIKU_LLVM_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR)
+                       $(HAIKU_LLVM_FILE:B) ] ;
+
+               HAIKU_LLVM_HEADERS_DEPENDENCY = [ ExtractArchive 
$(HAIKU_LLVM_DIR)
+                       : common/include/ : $(zipFile) : extracted-llvm ] ;
+               HAIKU_LLVM_HEADERS = [ FDirName $(HAIKU_LLVM_DIR) common 
include ] ;
+
+               # We can't Glob these because they aren't extracted yet.
+               HAIKU_LLVM_LIBS = [ ExtractArchive $(HAIKU_LLVM_DIR)
+                       :
+                       common/lib/libLLVMAsmParser.a
+                       common/lib/libLLVMInstrumentation.a
+                       common/lib/libLLVMLinker.a
+                       common/lib/libLLVMArchive.a
+                       common/lib/libLLVMBitReader.a
+                       common/lib/libLLVMDebugInfo.a
+                       common/lib/libLLVMJIT.a
+                       common/lib/libLLVMipo.a
+                       common/lib/libLLVMVectorize.a
+                       common/lib/libLLVMBitWriter.a
+                       common/lib/libLLVMTableGen.a
+                       #common/lib/libLLVMHexagonCodeGen.a
+                       #common/lib/libLLVMHexagonAsmPrinter.a
+                       #common/lib/libLLVMHexagonDesc.a
+                       #common/lib/libLLVMHexagonInfo.a
+                       #common/lib/libLLVMNVPTXCodeGen.a
+                       #common/lib/libLLVMNVPTXDesc.a
+                       #common/lib/libLLVMNVPTXInfo.a
+                       #common/lib/libLLVMNVPTXAsmPrinter.a
+                       #common/lib/libLLVMMBlazeCodeGen.a
+                       #common/lib/libLLVMMBlazeAsmParser.a
+                       #common/lib/libLLVMMBlazeDisassembler.a
+                       #common/lib/libLLVMMBlazeDesc.a
+                       #common/lib/libLLVMMBlazeInfo.a
+                       #common/lib/libLLVMMBlazeAsmPrinter.a
+                       common/lib/libLLVMCppBackendCodeGen.a
+                       common/lib/libLLVMCppBackendInfo.a
+                       #common/lib/libLLVMMSP430CodeGen.a
+                       #common/lib/libLLVMMSP430Desc.a
+                       #common/lib/libLLVMMSP430AsmPrinter.a
+                       #common/lib/libLLVMMSP430Info.a
+                       #common/lib/libLLVMXCoreCodeGen.a
+                       #common/lib/libLLVMXCoreDesc.a
+                       #common/lib/libLLVMXCoreInfo.a
+                       #common/lib/libLLVMCellSPUCodeGen.a
+                       #common/lib/libLLVMCellSPUDesc.a
+                       #common/lib/libLLVMCellSPUInfo.a
+                       #common/lib/libLLVMMipsAsmParser.a
+                       #common/lib/libLLVMMipsCodeGen.a
+                       #common/lib/libLLVMMipsDesc.a
+                       #common/lib/libLLVMMipsAsmPrinter.a
+                       #common/lib/libLLVMMipsDisassembler.a
+                       #common/lib/libLLVMMipsInfo.a
+                       #common/lib/libLLVMARMAsmParser.a
+                       #common/lib/libLLVMARMCodeGen.a
+                       #common/lib/libLLVMARMDisassembler.a
+                       #common/lib/libLLVMARMDesc.a
+                       #common/lib/libLLVMARMInfo.a
+                       #common/lib/libLLVMARMAsmPrinter.a
+                       #common/lib/libLLVMPowerPCCodeGen.a
+                       #common/lib/libLLVMPowerPCDesc.a
+                       #common/lib/libLLVMPowerPCInfo.a
+                       #common/lib/libLLVMPowerPCAsmPrinter.a
+                       #common/lib/libLLVMSparcCodeGen.a
+                       #common/lib/libLLVMSparcDesc.a
+                       #common/lib/libLLVMSparcInfo.a
+                       common/lib/libLLVMX86AsmParser.a
+                       common/lib/libLLVMX86CodeGen.a
+                       common/lib/libLLVMSelectionDAG.a
+                       common/lib/libLLVMAsmPrinter.a
+                       common/lib/libLLVMX86Disassembler.a
+                       common/lib/libLLVMX86Desc.a
+                       common/lib/libLLVMX86Info.a
+                       common/lib/libLLVMX86AsmPrinter.a
+                       common/lib/libLLVMX86Utils.a
+                       common/lib/libLLVMMCDisassembler.a
+                       common/lib/libLLVMMCParser.a
+                       common/lib/libLLVMInterpreter.a
+                       common/lib/libLLVMCodeGen.a
+                       common/lib/libLLVMScalarOpts.a
+                       common/lib/libLLVMInstCombine.a
+                       common/lib/libLLVMTransformUtils.a
+                       common/lib/libLLVMipa.a
+                       common/lib/libLLVMAnalysis.a
+                       common/lib/libLLVMMCJIT.a
+                       common/lib/libLLVMRuntimeDyld.a
+                       common/lib/libLLVMExecutionEngine.a
+                       common/lib/libLLVMTarget.a
+                       common/lib/libLLVMMC.a
+                       common/lib/libLLVMObject.a
+                       common/lib/libLLVMCore.a
+                       common/lib/libLLVMSupport.a
+                       : $(zipFile) : extracted-llvm ]
+               ;
+
+               EnableBuildFeatures llvm ;
+       } else {
+               # Nor will it ever be
+               Echo "LLVM not available on GCC2" ;
+       }
+} else {
+       Echo "LLVM not yet available on $(TARGET_ARCH)" ;
+}
+
+
 # GLU (GL Utilities)
 if $(TARGET_ARCH) = x86 {
        if $(HAIKU_GCC_VERSION[1]) >= 4 {
@@ -281,6 +393,7 @@ if $(TARGET_ARCH) = x86 {
 
        Depends $(HAIKU_MESA_HEADERS_DEPENDENCY) : 
$(HAIKU_GLU_HEADERS_DEPENDENCY) ;
        Depends $(HAIKU_GLAPI_LIBS) : $(HAIKU_GLU_LIBS) ;
+       Depends $(HAIKU_GALLIUM_LLVMPIPE_LIB) : $(HAIKU_LLVM_LIBS) ;
 
        EnableBuildFeatures mesa ;
 } else {

############################################################################

Revision:    hrev45149
Commit:      414ba3b2a3e6df1ef9a177472ca18c59500bdc3e
URL:         http://cgit.haiku-os.org/haiku/commit/?id=414ba3b
Author:      Alexander von Gluck IV <kallisti5@xxxxxxxxxxx>
Date:        Fri Jan 11 06:44:51 2013 UTC

swpipe: Make swpipe properly use llvm

* It should build now for most gcc4 folks
* Not in image yet
* Still is kind of crashy

----------------------------------------------------------------------------

diff --git a/src/add-ons/opengl/swpipe/Jamfile 
b/src/add-ons/opengl/swpipe/Jamfile
index 6d067ff..b46eded 100644
--- a/src/add-ons/opengl/swpipe/Jamfile
+++ b/src/add-ons/opengl/swpipe/Jamfile
@@ -1,10 +1,7 @@
 SubDir HAIKU_TOP src add-ons opengl swpipe ;
+SubDirSysHdrs $(HAIKU_MESA_HEADERS) ;
 
-UseHeaders [ FDirName $(HAIKU_MESA_DIR) src gallium auxiliary ] ;
-UseHeaders [ FDirName $(HAIKU_MESA_DIR) src gallium drivers ] ;
-UseHeaders [ FDirName $(HAIKU_MESA_DIR) src gallium include ] ;
-UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mapi ] ;
-UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mesa ] ;
+UsePrivateHeaders interface ;
 
 local sources =
        SoftwareRenderer.cpp
@@ -13,117 +10,47 @@ local sources =
        GalliumFramebuffer.cpp
        bitmap_wrapper.cpp ;
 
-local HAIKU_SWPIPE_DRIVER = $(HAIKU_GALLIUM_SOFTPIPE_LIB) ;
-
-local llvmLibraries = ;
-if $(HAIKU_LLVM_DIR) {
-       # TODO: Add LLVM OptionalBuildPackage
-       SubDirC++Flags [ FDefines HAVE_LLVM=0x0302 ] ;
-
-       # TODO: This is a hack for now
-       SubDirSysHdrs /boot/common/include ;
-       HAIKU_LLVM_DIR = /boot/common/lib ;
-
-       HAIKU_SWPIPE_DRIVER = $(HAIKU_GALLIUM_LLVMPIPE_LIB) ;
-
-       llvmLibraries =
-               $(HAIKU_LLVM_DIR)/libLLVMAsmParser.a
-               $(HAIKU_LLVM_DIR)/libLLVMInstrumentation.a
-               $(HAIKU_LLVM_DIR)/libLLVMLinker.a
-               $(HAIKU_LLVM_DIR)/libLLVMArchive.a
-               $(HAIKU_LLVM_DIR)/libLLVMBitReader.a
-               $(HAIKU_LLVM_DIR)/libLLVMDebugInfo.a
-               $(HAIKU_LLVM_DIR)/libLLVMJIT.a
-               $(HAIKU_LLVM_DIR)/libLLVMipo.a
-               $(HAIKU_LLVM_DIR)/libLLVMVectorize.a
-               $(HAIKU_LLVM_DIR)/libLLVMBitWriter.a
-               $(HAIKU_LLVM_DIR)/libLLVMTableGen.a
-               $(HAIKU_LLVM_DIR)/libLLVMHexagonCodeGen.a
-               $(HAIKU_LLVM_DIR)/libLLVMHexagonAsmPrinter.a
-               $(HAIKU_LLVM_DIR)/libLLVMHexagonDesc.a
-               $(HAIKU_LLVM_DIR)/libLLVMHexagonInfo.a
-               $(HAIKU_LLVM_DIR)/libLLVMNVPTXCodeGen.a
-               $(HAIKU_LLVM_DIR)/libLLVMNVPTXDesc.a
-               $(HAIKU_LLVM_DIR)/libLLVMNVPTXInfo.a
-               $(HAIKU_LLVM_DIR)/libLLVMNVPTXAsmPrinter.a
-               $(HAIKU_LLVM_DIR)/libLLVMMBlazeCodeGen.a
-               $(HAIKU_LLVM_DIR)/libLLVMMBlazeAsmParser.a
-               $(HAIKU_LLVM_DIR)/libLLVMMBlazeDisassembler.a
-               $(HAIKU_LLVM_DIR)/libLLVMMBlazeDesc.a
-               $(HAIKU_LLVM_DIR)/libLLVMMBlazeInfo.a
-               $(HAIKU_LLVM_DIR)/libLLVMMBlazeAsmPrinter.a
-               $(HAIKU_LLVM_DIR)/libLLVMCppBackendCodeGen.a
-               $(HAIKU_LLVM_DIR)/libLLVMCppBackendInfo.a
-               $(HAIKU_LLVM_DIR)/libLLVMMSP430CodeGen.a
-               $(HAIKU_LLVM_DIR)/libLLVMMSP430Desc.a
-               $(HAIKU_LLVM_DIR)/libLLVMMSP430AsmPrinter.a
-               $(HAIKU_LLVM_DIR)/libLLVMMSP430Info.a
-               $(HAIKU_LLVM_DIR)/libLLVMXCoreCodeGen.a
-               $(HAIKU_LLVM_DIR)/libLLVMXCoreDesc.a
-               $(HAIKU_LLVM_DIR)/libLLVMXCoreInfo.a
-               $(HAIKU_LLVM_DIR)/libLLVMCellSPUCodeGen.a
-               $(HAIKU_LLVM_DIR)/libLLVMCellSPUDesc.a
-               $(HAIKU_LLVM_DIR)/libLLVMCellSPUInfo.a
-               $(HAIKU_LLVM_DIR)/libLLVMMipsAsmParser.a
-               $(HAIKU_LLVM_DIR)/libLLVMMipsCodeGen.a
-               $(HAIKU_LLVM_DIR)/libLLVMMipsDesc.a
-               $(HAIKU_LLVM_DIR)/libLLVMMipsAsmPrinter.a
-               $(HAIKU_LLVM_DIR)/libLLVMMipsDisassembler.a
-               $(HAIKU_LLVM_DIR)/libLLVMMipsInfo.a
-               $(HAIKU_LLVM_DIR)/libLLVMARMAsmParser.a
-               $(HAIKU_LLVM_DIR)/libLLVMARMCodeGen.a
-               $(HAIKU_LLVM_DIR)/libLLVMARMDisassembler.a
-               $(HAIKU_LLVM_DIR)/libLLVMARMDesc.a
-               $(HAIKU_LLVM_DIR)/libLLVMARMInfo.a
-               $(HAIKU_LLVM_DIR)/libLLVMARMAsmPrinter.a
-               $(HAIKU_LLVM_DIR)/libLLVMPowerPCCodeGen.a
-               $(HAIKU_LLVM_DIR)/libLLVMPowerPCDesc.a
-               $(HAIKU_LLVM_DIR)/libLLVMPowerPCInfo.a
-               $(HAIKU_LLVM_DIR)/libLLVMPowerPCAsmPrinter.a
-               $(HAIKU_LLVM_DIR)/libLLVMSparcCodeGen.a
-               $(HAIKU_LLVM_DIR)/libLLVMSparcDesc.a
-               $(HAIKU_LLVM_DIR)/libLLVMSparcInfo.a
-               $(HAIKU_LLVM_DIR)/libLLVMX86AsmParser.a
-               $(HAIKU_LLVM_DIR)/libLLVMX86CodeGen.a
-               $(HAIKU_LLVM_DIR)/libLLVMSelectionDAG.a
-               $(HAIKU_LLVM_DIR)/libLLVMAsmPrinter.a
-               $(HAIKU_LLVM_DIR)/libLLVMX86Disassembler.a
-               $(HAIKU_LLVM_DIR)/libLLVMX86Desc.a
-               $(HAIKU_LLVM_DIR)/libLLVMX86Info.a
-               $(HAIKU_LLVM_DIR)/libLLVMX86AsmPrinter.a
-               $(HAIKU_LLVM_DIR)/libLLVMX86Utils.a
-               $(HAIKU_LLVM_DIR)/libLLVMMCDisassembler.a
-               $(HAIKU_LLVM_DIR)/libLLVMMCParser.a
-               $(HAIKU_LLVM_DIR)/libLLVMInterpreter.a
-               $(HAIKU_LLVM_DIR)/libLLVMCodeGen.a
-               $(HAIKU_LLVM_DIR)/libLLVMScalarOpts.a
-               $(HAIKU_LLVM_DIR)/libLLVMInstCombine.a
-               $(HAIKU_LLVM_DIR)/libLLVMTransformUtils.a
-               $(HAIKU_LLVM_DIR)/libLLVMipa.a
-               $(HAIKU_LLVM_DIR)/libLLVMAnalysis.a
-               $(HAIKU_LLVM_DIR)/libLLVMMCJIT.a
-               $(HAIKU_LLVM_DIR)/libLLVMRuntimeDyld.a
-               $(HAIKU_LLVM_DIR)/libLLVMExecutionEngine.a
-               $(HAIKU_LLVM_DIR)/libLLVMTarget.a
-               $(HAIKU_LLVM_DIR)/libLLVMMC.a
-               $(HAIKU_LLVM_DIR)/libLLVMObject.a
-               $(HAIKU_LLVM_DIR)/libLLVMCore.a
-               $(HAIKU_LLVM_DIR)/libLLVMSupport.a ;
-}
-
-UsePrivateHeaders interface ;
-SubDirSysHdrs $(HAIKU_MESA_HEADERS) ;
 Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ;
 
+UseHeaders [ FDirName $(HAIKU_MESA_DIR) src gallium auxiliary ] ;
+UseHeaders [ FDirName $(HAIKU_MESA_DIR) src gallium drivers ] ;
+UseHeaders [ FDirName $(HAIKU_MESA_DIR) src gallium include ] ;
+UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mapi ] ;
+UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mesa ] ;
+
 AddResources Software\ Renderer : SoftwareRenderer.rdef ;
 
-Addon Software\ Renderer :
-       $(sources)
-       : libGL.so
-       $(HAIKU_SWPIPE_DRIVER)
-       $(HAIKU_MESA_LIB)
-       $(HAIKU_GLSL_LIB)
-       $(HAIKU_GALLIUM_LIB)
-       $(llvmLibraries)
-       be translation stdc++ $(TARGET_LIBSUPC++)
-;
+if FIsBuildFeatureEnabled(llvm) {
+       # LLVM Pipe enabled Gallium Software Renderer
+       # Requires:
+       #       - LLVM optional package
+       #   - Mesa optional package compiled with LLVM installed
+       SubDirC++Flags [ FDefines HAVE_LLVM=0x0302 ] ;
+
+       Addon Software\ Renderer :
+               $(sources)
+               :
+               libGL.so
+               $(HAIKU_GALLIUM_LLVMPIPE_LIB)
+               $(HAIKU_MESA_LIB)
+               $(HAIKU_GLSL_LIB)
+               $(HAIKU_GALLIUM_LIB)
+               $(HAIKU_LLVM_LIBS)
+               be translation stdc++ $(TARGET_LIBSUPC++)
+       ;
+} else {
+       # SoftPipe enabled Gallium Software Renderer
+       # Note: Slow and pointless for production use!
+       # Requires:
+       #   - Mesa optional package compiled *without* LLVM installed.
+       Addon Software\ Renderer :
+               $(sources)
+               :
+               libGL.so
+               $(HAIKU_GALLIUM_SOFTPIPE_LIB)
+               $(HAIKU_MESA_LIB)
+               $(HAIKU_GLSL_LIB)
+               $(HAIKU_GALLIUM_LIB)
+               be translation stdc++ $(TARGET_LIBSUPC++)
+       ;
+}
\ No newline at end of file


Other related posts: