Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # LLVM does not provide ABI stability between different versions. For this
- # reason OE makes it possible to build and install different llvm versions
- # at the same time.
- #
- # This is true for the normal recipes as well as the native ones.
- #
- # All regular installation directories are prefixed with 'llvm${LLVM_RELEASE}'
- # e.g. "${STAGING_BINDIR}/llvm2.5" or "${STAGING_INCDIR}/llvm2.5"
- #
- # For your program or library that makes use of llvm you do should not need to
- # modify anything as long as it uses the results of various llvm-config
- # invocations. If you need customizations something is wrong and it needs to be
- # fixed (report bug).
- #
- # However the *recipe* for your program/library *must* declare
- # export WANT_LLVM_RELEASE = "<valid version number>"
- # The version number is picked up by a generic wrapper script which just calls
- # the variant of the specified version.
- DESCRIPTION = "The Low Level Virtual Machine"
- HOMEPAGE = "http://llvm.org"
- # 3-clause BSD-like
- # University of Illinois/NCSA Open Source License
- LICENSE = "NCSA"
- LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=d0a3ef0d3e0e8f5cf59e5ffc273ab1f8"
- DEPENDS = "libffi libxml2-native "
- inherit perlnative pythonnative autotools
- LLVM_RELEASE = "${PV}"
- LLVM_DIR = "llvm${LLVM_RELEASE}"
- SRC_URI = "http://llvm.org/releases/${PV}/llvm-${PV}.src.tar.gz\
- http://llvm.org/releases/${PV}/cfe-${PV}.src.tar.gz\
- http://llvm.org/releases/${PV}/compiler-rt-${PV}.src.tar.gz\
- "
- SRC_URI[md5sum] = "40564e1dc390f9844f1711c08b08e391"
- SRC_URI[sha256sum] = "68766b1e70d05a25e2f502e997a3cb3937187a3296595cf6e0977d5cd6727578"
- SRC_URI[md5sum] = "8284891e3e311829b8e44ac813d0c9ef"
- SRC_URI[sha256sum] = "b1b55de4ab3a57d3e0331a83e0284610191c77d924e3446498d9113d08dfb996"
- SRC_URI[md5sum] = "9c129ce24514467cfe492cf2fed8e2c4"
- SRC_URI[sha256sum] = "0e2f3180d6316e6c43f064fdd406c5c6515e682c5f31c57c28335b68c7525423"
- S = "${WORKDIR}/llvm-${PV}.src"
- LLVM_BUILD_DIR = "${WORKDIR}/llvm-${PV}.build"
- LLVM_INSTALL_DIR = "${WORKDIR}/llvm-install"
- EXTRA_OECONF += "--disable-assertions \
- --prefix=/usr\
- --enable-debug-runtime \
- --disable-expensive-checks \
- --enable-bindings=none \
- --enable-keep-symbols \
- --enable-libffi \
- --enable-optimized \
- --enable-shared \
- --enable-targets=x86_64\
- "
- EXTRA_OECMAKE_append_class_target = " -DCMAKE_CROSSCOMPILING=True"
- EXTRA_OEMAKE += "REQUIRES_RTTI=1 VERBOSE=1"
- do_configure_prepend() {
- #move clang's and compiler rt directory
- mkdir -p ${WORKDIR}/llvm-${PV}.src/tools/clang
- mkdir -p ${WORKDIR}/llvm-${PV}.src/projects/compiler-rt
- cp -R ${WORKDIR}/cfe-${PV}.src/* ${WORKDIR}/llvm-${PV}.src/tools/clang/
- cp -R ${WORKDIR}/compiler-rt-${PV}.src/* ${WORKDIR}/llvm-${PV}.src/projects/compiler-rt
- # Remove RPATHs
- sed -i 's:$(RPATH) -Wl,$(\(ToolDir\|LibDir\|ExmplDir\))::g' ${S}/Makefile.rules
- # Drop "svn" suffix from version string
- sed -i 's/${PV}svn/${PV}/g' ${S}/configure
- # Fix paths in llvm-config
- sed -i "s|sys::path::parent_path(CurrentPath))\.str()|sys::path::parent_path(sys::path::parent_path(CurrentPath))).str()|g" ${S}/tools/llvm-config/llvm-config.cpp
- sed -ri "s#/(bin|include|lib)(/?\")#/\1/${LLVM_DIR}\2#g" ${S}/tools/llvm-config/llvm-config.cpp
- # Fails to build unless using separate directory from source
- mkdir -p ${LLVM_BUILD_DIR}
- cd ${LLVM_BUILD_DIR}
- }
- do_compile() {
- cd ${LLVM_BUILD_DIR}
- oe_runmake \
- AR="${BUILD_AR}" \
- CC="${BUILD_CC}" \
- CFLAGS="${BUILD_CFLAGS}" \
- CXX="${BUILD_CXX}" \
- CXXFLAGS="${BUILD_CXXFLAGS}" \
- CPP="${BUILD_CPP}" \
- CPPFLAGS="${BUILD_CPPFLAGS}" \
- NM="${BUILD_NM}" \
- RANLIB="${BUILD_RANLIB}" \
- PATH="${STAGING_BINDIR_NATIVE}:$PATH" \
- cross-compile-build-tools
- oe_runmake
- }
- do_install() {
- cd ${LLVM_BUILD_DIR}
- oe_runmake DESTDIR=${LLVM_INSTALL_DIR} install
- mv ${LLVM_INSTALL_DIR}${bindir}/${HOST_SYS}-llvm-config-host ${LLVM_INSTALL_DIR}/llvm-config-host
- install -d ${D}${bindir}/${LLVM_DIR}
- mv ${LLVM_INSTALL_DIR}${bindir}/* ${D}${bindir}/${LLVM_DIR}/
- install -d ${D}${includedir}/${LLVM_DIR}
- install -d ${D}{libdir}/clang/${PV}
- mv ${LLVM_INSTALL_DIR}${includedir}/ ${D}${includedir}/${LLVM_DIR}/
- install -d ${D}${libdir}/${LLVM_DIR}
- mv ${LLVM_INSTALL_DIR}${libdir}/* ${D}${libdir}/${LLVM_DIR}/
- ln -s ${LLVM_DIR}/libLLVM-${PV}.so ${D}${libdir}/libLLVM-${PV}.so
- install -d ${D}${docdir}/${LLVM_DIR}
- mv ${LLVM_INSTALL_DIR}${prefix}/docs/llvm/* ${D}${docdir}/${LLVM_DIR}
- install -d ${D}{libdir}/clang/${PV}
- cp ${LLVM_BUILD_DIR}/Release/bin/clang ${D}${bindir}
- cp ${LLVM_BUILD_DIR}/Release/bin/llvm* ${D}${bindir}
- }
- SYSROOT_PREPROCESS_FUNCS += "llvm_sysroot_preprocess"
- llvm_sysroot_preprocess() {
- install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}
- mv ${LLVM_INSTALL_DIR}/llvm-config-host ${SYSROOT_DESTDIR}${bindir_crossscripts}/llvm-config${PV}
- }
- ALLOW_EMPTY_${PN} = "1"
- ALLOW_EMPTY_${PN}-staticdev = "1"
- FILES_${PN} = " \
- ${libdir}/${LLVM_DIR}/libLTO.so\
- ${libdir}/${LLVM_DIR}/libLLVM-3.3.so\
- ${libdir}/${LLVM_DIR}/libclang.so\
- ${libdir}/llvm${PV}/clang/${PV}/include/avxintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/arm_neon.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/bmiintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/mm3dnow.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/module.map\
- ${libdir}/llvm${PV}/clang/${PV}/include/tgmath.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/__wmmintrin_pclmul.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/stdalign.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/pmmintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/varargs.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/f16cintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/immintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/avx2intrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/x86intrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/stdbool.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/lzcntintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/__wmmintrin_aes.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/float.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/unwind.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/rdseedintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/stdarg.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/fmaintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/ammintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/wmmintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/smmintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/tmmintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/popcntintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/emmintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/stdnoreturn.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/stdint.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/fma4intrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/bmi2intrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/cpuid.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/prfchwintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/mm_malloc.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/mmintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/altivec.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/iso646.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/stddef.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/limits.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/xmmintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/nmmintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/xopintrin.h\
- ${libdir}/llvm${PV}/clang/${PV}/include/rtmintrin.h\
- ${bindir}/clang-tblgen\
- ${bindir}/clang-format\
- ${bindir}/bugpoint\
- ${bindir}/clang-check\
- ${bindir}/count\
- ${bindir}/llvm-dwarfdump\
- ${bindir}/llvm-tblgen\
- ${bindir}/llvm-ar\
- ${bindir}/FileCheck\
- ${bindir}/clang++\
- ${bindir}/llvm-lit\
- ${bindir}/fpcmp\
- ${bindir}/c-arcmt-test\
- ${bindir}/llvm-prof\
- ${bindir}/llvm-link\
- ${bindir}/macho-dump\
- ${bindir}/llvm-stress\
- ${bindir}/llvm-mcmarkup\
- ${bindir}/not\
- ${bindir}/c-index-test\
- ${bindir}/llvm-ranlib\
- ${bindir}/llvm-bcanalyzer\
- ${bindir}/llvm-nm\
- ${bindir}/llvm-objdump\
- ${bindir}/llvm-config\
- ${bindir}/llvm-dis\
- ${bindir}/llvm-PerfectShuffle\
- ${bindir}/llvm-diff\
- ${bindir}/llc\
- ${bindir}/llvm-rtdyld\
- ${bindir}/llvm-as\
- ${bindir}/llvm-size\
- ${bindir}/obj2yaml\
- ${bindir}/arcmt-test\
- ${bindir}/llvm-mc\
- ${bindir}/FileUpdate\
- ${bindir}/yaml2obj\
- ${bindir}/llvm-cov\
- ${bindir}/diagtool\
- ${bindir}/FileCheck\
- ${bindir}/llvm-symbolizer\
- ${bindir}/lli\
- ${bindir}/opt\
- ${bindir}/llvm-readobj\
- ${bindir}/llvm-extract\
- ${bindir}/clang\
- ${bindir}/Xl_@H�W@@\
- "
- FILES_${PN}-staticdev = "${libdir}/${LLVM_DIR}/libLLVMMCParser.a\
- ${libdir}/${LLVM_DIR}/libLLVMInstrumentation.a\
- ${libdir}/${LLVM_DIR}/libLLVMMCJIT.a\
- ${libdir}/${LLVM_DIR}/libLLVMCore.a\
- ${libdir}/${LLVM_DIR}/libLLVMObjCARCOpts.a\
- ${libdir}/${LLVM_DIR}/libLLVMSupport.a\
- ${libdir}/${LLVM_DIR}/libLLVMX86AsmParser.a\
- ${libdir}/${LLVM_DIR}/libLLVMAsmPrinter.a\
- ${libdir}/${LLVM_DIR}/libLLVMAnalysis.a\
- ${libdir}/${LLVM_DIR}/libprofile_rt.so\
- ${libdir}/${LLVM_DIR}/libLLVMRuntimeDyld.a\
- ${libdir}/${LLVM_DIR}/libLTO.a\
- ${libdir}/${LLVM_DIR}/libLLVMScalarOpts.a\
- ${libdir}/${LLVM_DIR}/libLLVMX86CodeGen.a\
- ${libdir}/${LLVM_DIR}/libLLVMLinker.a\
- ${libdir}/${LLVM_DIR}/libLLVMExecutionEngine.a\
- ${libdir}/${LLVM_DIR}/libLLVMSelectionDAG.a\
- ${libdir}/${LLVM_DIR}/libLLVMInterpreter.a\
- ${libdir}/${LLVM_DIR}/libprofile_rt.a\
- ${libdir}/${LLVM_DIR}/libLLVMInstCombine.a\
- ${libdir}/${LLVM_DIR}/libLLVMMCDisassembler\
- ${libdir}/${LLVM_DIR}/libLLVMArchive.a\
- ${libdir}/${LLVM_DIR}/libLLVMJIT.a\
- ${libdir}/${LLVM_DIR}/libLLVMTableGen.a\
- ${libdir}/${LLVM_DIR}/libLLVMVectorize.a\
- ${libdir}/${LLVM_DIR}/libLLVMX86Info.a\
- ${libdir}/${LLVM_DIR}/libLLVMCodeGen.a\
- ${libdir}/${LLVM_DIR}/libLLVMX86Disassembler.a\
- ${libdir}/${LLVM_DIR}/libLLVMipa.a\
- ${libdir}/${LLVM_DIR}/libLLVMTarget.a\
- ${libdir}/${LLVM_DIR}/libLLVMX86AsmPrinter.a\
- ${libdir}/${LLVM_DIR}/libLLVMTransformUtils.a\
- ${libdir}/${LLVM_DIR}/libLLVMX86Utils.a\
- ${libdir}/${LLVM_DIR}/libLLVMIRReader.a\
- ${libdir}/${LLVM_DIR}/libLLVMBitReader.a\
- ${libdir}/${LLVM_DIR}/libLLVMX86Desc.a\
- ${libdir}/${LLVM_DIR}/libLLVMAsmParser.a\
- ${libdir}/${LLVM_DIR}/libLLVMMC.a\
- ${libdir}/${LLVM_DIR}/libLLVMipo.a\
- ${libdir}/${LLVM_DIR}/libLLVMBitWriter.a\
- ${libdir}/${LLVM_DIR}/libLLVMObject.a\
- ${libdir}/${LLVM_DIR}/libLLVMDebugInfo.a\
- ${libdir}/${LLVM_DIR}/libLLVMOption.a\
- ${libdir}/${LLVM_DIR}/libLLVMMCDisassembler.a\
- ${libdir}/${LLVM_DIR}libclangRewriteCore.a\
- ${libdir}/${LLVM_DIR}/libclangEdit.a\
- ${libdir}/${LLVM_DIR}/libclangBasic.a\
- ${libdir}/${LLVM_DIR}/libclangFormat.a\
- ${libdir}/${LLVM_DIR}/libclangASTMatchers.a\
- ${libdir}/${LLVM_DIR}/libclangStaticAnalyzerCore.a\
- ${libdir}/${LLVM_DIR}/libclangFrontendTool.a\
- ${libdir}/${LLVM_DIR}/libclangLex.a\
- ${libdir}/${LLVM_DIR}/libclangRewriteFrontend.a\
- ${libdir}/${LLVM_DIR}/libclangCodeGen.a\
- ${libdir}/${LLVM_DIR}/libclangAST.a\
- ${libdir}/${LLVM_DIR}/libclangSerialization.a\
- ${libdir}/${LLVM_DIR}/libclangStaticAnalyzerCheckers.a\
- ${libdir}/${LLVM_DIR}/libclangTooling.a\
- ${libdir}/${LLVM_DIR}/libclang.a\
- ${libdir}/${LLVM_DIR}/libclangSema.a\
- ${libdir}/${LLVM_DIR}/libclangDriver.a\
- ${libdir}/${LLVM_DIR}/libclangStaticAnalyzerFrontend.a\
- ${libdir}/${LLVM_DIR}/libclangARCMigrate.a\
- ${libdir}/${LLVM_DIR}/libclangAnalysis.a\
- ${libdir}/${LLVM_DIR}/libclangFrontend.a\
- ${libdir}/${LLVM_DIR}/libclangParse.a\
- ${libdir}/${LLVM_DIR}/libclangRewriteCore.a\
- "
- DOTDEBUG-dbg = " ${bindir}/${LLVM_DIR}/.debug \
- ${bindir}/.debug\
- ${libdir}/${LLVM_DIR}/.debug/BugpointPasses.so \
- ${libdir}/${LLVM_DIR}/.debug/LLVMHello.so \
- /usr/src/debug \
- ${libdir}/${LLVM_DIR}/.debug/libprofile_rt.so\
- ${libdir}/${LLVM_DIR}/.debug/libLTO.so\
- ${libdir}/${LLVM_DIR}/.debug/libLLVM-3.3.so\
- ${libdir}/${LLVM_DIR}/.debug/libclang.so\
- ${libdir}/${LLVM_DIR}/.debug/clang-tblgen\
- ${libdir}/${LLVM_DIR}/.debug/clang-format\
- ${libdir}/${LLVM_DIR}/.debug/bugpoint\
- ${libdir}/${LLVM_DIR}/.debug/clang-check\
- ${libdir}/${LLVM_DIR}/.debug/count\
- ${libdir}/${LLVM_DIR}/.debug/llvm-dwarfdump\
- ${libdir}/${LLVM_DIR}/.debug/llvm-tblgen\
- ${libdir}/${LLVM_DIR}/.debug/llvm-ar\
- ${libdir}/${LLVM_DIR}/.debug/FileCheck\
- ${libdir}/${LLVM_DIR}/.debug/clang++\
- ${libdir}/${LLVM_DIR}/.debug/fpcmp\
- ${libdir}/${LLVM_DIR}/.debug/c-arcmt-test\
- ${libdir}/${LLVM_DIR}/.debug/llvm-prof\
- ${libdir}/${LLVM_DIR}/.debug/llvm-link\
- ${libdir}/${LLVM_DIR}/.debug/macho-dump\
- ${libdir}/${LLVM_DIR}/.debug/llvm-stress\
- ${libdir}/${LLVM_DIR}/.debug/llvm-mcmarkup\
- ${libdir}/${LLVM_DIR}/.debug/not\
- ${libdir}/${LLVM_DIR}/.debug/c-index-test\
- ${libdir}/${LLVM_DIR}/.debug/llvm-ranlib\
- ${libdir}/${LLVM_DIR}/.debug/llvm-bcanalyzer\
- ${libdir}/${LLVM_DIR}/.debug/llvm-nm\
- ${libdir}/${LLVM_DIR}/.debug/llvm-objdump\
- ${libdir}/${LLVM_DIR}/.debug/llvm-config\
- ${libdir}/${LLVM_DIR}/.debug/llvm-dis\
- ${libdir}/${LLVM_DIR}/.debug/llvm-PerfectShuffle\
- ${libdir}/${LLVM_DIR}/.debug/llvm-diff\
- ${libdir}/${LLVM_DIR}/.debug/llc\
- ${libdir}/${LLVM_DIR}/.debug/llvm-rtdyld\
- ${libdir}/${LLVM_DIR}/.debug/llvm-as\
- ${libdir}/${LLVM_DIR}/.debug/llvm-size\
- ${libdir}/${LLVM_DIR}/.debug/obj2yaml\
- ${libdir}/${LLVM_DIR}/.debug/arcmt-test\
- ${libdir}/${LLVM_DIR}/.debug/llvm-mc\
- ${libdir}/${LLVM_DIR}/.debug/FileUpdate\
- ${libdir}/${LLVM_DIR}/.debug/yaml2obj\
- ${libdir}/${LLVM_DIR}/.debug/llvm-cov\
- ${libdir}/${LLVM_DIR}/.debug/diagtool\
- ${libdir}/${LLVM_DIR}/.debug/llvm-symbolizer\
- ${libdir}/${LLVM_DIR}/.debug/lli\
- ${libdir}/${LLVM_DIR}/.debug/opt\
- ${libdir}/${LLVM_DIR}/.debug/llvm-readobj\
- ${libdir}/${LLVM_DIR}/.debug/llvm-extract\
- ${libdir}/${LLVM_DIR}/.debug/clang\
- "
- FILES_${PN}-dev = "${bindir}/${LLVM_DIR} \
- ${includedir}/${LLVM_DIR} \
- ${libdir}/${LLVM_DIR}/BugpointPasses.so \
- ${libdir}/${LLVM_DIR}/LLVMHello.so \
- ${libdir}/${LLVM_DIR}/libLLVMMCParser.a\
- ${libdir}/libLLVM-3.3.so\
- "
- INSANE_SKIP_libllvm${LLVM_RELEASE}-llvm-${LLVM_RELEASE} += "dev-so"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement