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