libcxx_16.0.5.bb 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. # Copyright (C) 2015 Khem Raj <raj.khem@gmail.com>
  2. # Released under the MIT license (see COPYING.MIT for the terms)
  3. DESCRIPTION = "libc++ is a new implementation of the C++ standard library, targeting C++11"
  4. HOMEPAGE = "http://libcxx.llvm.org/"
  5. SECTION = "base"
  6. require clang.inc
  7. require common-source.inc
  8. inherit cmake cmake-native python3native
  9. PACKAGECONFIG ??= "compiler-rt exceptions ${@bb.utils.contains("RUNTIME", "llvm", "unwind unwind-shared", "", d)}"
  10. PACKAGECONFIG:append:armv5 = " no-atomics"
  11. PACKAGECONFIG:remove:class-native = "compiler-rt"
  12. PACKAGECONFIG[unwind] = "-DLIBCXXABI_USE_LLVM_UNWINDER=ON -DLIBCXXABI_ENABLE_STATIC_UNWINDER=ON,-DLIBCXXABI_USE_LLVM_UNWINDER=OFF,,"
  13. PACKAGECONFIG[exceptions] = "-DLIBCXXABI_ENABLE_EXCEPTIONS=ON -DDLIBCXX_ENABLE_EXCEPTIONS=ON,-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF -DLIBCXX_ENABLE_EXCEPTIONS=OFF -DCMAKE_REQUIRED_FLAGS='-fno-exceptions',"
  14. PACKAGECONFIG[no-atomics] = "-D_LIBCXXABI_HAS_ATOMIC_BUILTINS=OFF -DCMAKE_SHARED_LINKER_FLAGS='-latomic',,"
  15. PACKAGECONFIG[compiler-rt] = "-DLIBCXX_USE_COMPILER_RT=ON -DLIBCXXABI_USE_COMPILER_RT=ON -DLIBUNWIND_USE_COMPILER_RT=ON,,compiler-rt"
  16. PACKAGECONFIG[unwind-shared] = "-DLIBUNWIND_ENABLE_SHARED=ON,-DLIBUNWIND_ENABLE_SHARED=OFF,,"
  17. DEPENDS += "ninja-native"
  18. DEPENDS:append:class-target = " clang-cross-${TARGET_ARCH} virtual/${MLPREFIX}libc virtual/${TARGET_PREFIX}compilerlibs"
  19. DEPENDS:append:class-nativesdk = " clang-crosssdk-${SDK_ARCH} nativesdk-compiler-rt"
  20. DEPENDS:append:class-native = " clang-native"
  21. LIBCPLUSPLUS = ""
  22. COMPILER_RT ?= "-rtlib=compiler-rt"
  23. # Trick clang.bbclass into not creating circular dependencies
  24. UNWINDLIB:class-nativesdk = "--unwindlib=libgcc"
  25. COMPILER_RT:class-nativesdk = "-rtlib=libgcc --unwindlib=libgcc"
  26. LIBCPLUSPLUS:class-nativesdk = "-stdlib=libstdc++"
  27. CC:append:toolchain-clang:class-native = " -unwindlib=libgcc -rtlib=libgcc"
  28. CC:append:toolchain-clang:class-nativesdk = " -unwindlib=libgcc -rtlib=libgcc"
  29. CXXFLAGS += "-stdlib=libstdc++"
  30. LDFLAGS += "-unwindlib=libgcc -stdlib=libstdc++"
  31. BUILD_CXXFLAGS += "-stdlib=libstdc++"
  32. BUILD_LDFLAGS += "-unwindlib=libgcc -rtlib=libgcc -stdlib=libstdc++"
  33. BUILD_CPPFLAGS:remove = "-stdlib=libc++"
  34. BUILD_LDFLAGS:remove = "-stdlib=libc++ -lc++abi"
  35. INHIBIT_DEFAULT_DEPS = "1"
  36. LIC_FILES_CHKSUM = "file://libcxx/LICENSE.TXT;md5=55d89dd7eec8d3b4204b680e27da3953 \
  37. file://libcxxabi/LICENSE.TXT;md5=7b9334635b542c56868400a46b272b1e \
  38. file://libunwind/LICENSE.TXT;md5=f66970035d12f196030658b11725e1a1 \
  39. "
  40. OECMAKE_TARGET_COMPILE = "cxxabi cxx"
  41. OECMAKE_TARGET_INSTALL = "install-cxx install-cxxabi ${@bb.utils.contains("RUNTIME", "llvm", "install-unwind", "", d)}"
  42. OECMAKE_SOURCEPATH = "${S}/llvm"
  43. EXTRA_OECMAKE += "\
  44. -DCMAKE_BUILD_TYPE=RelWithDebInfo \
  45. -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF \
  46. -DCMAKE_CROSSCOMPILING=ON \
  47. -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \
  48. -DLLVM_ENABLE_RTTI=ON \
  49. -DLIBUNWIND_ENABLE_CROSS_UNWINDING=ON \
  50. -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \
  51. -DLIBCXXABI_INCLUDE_TESTS=OFF \
  52. -DLIBCXXABI_ENABLE_SHARED=ON \
  53. -DLIBCXXABI_LIBCXX_INCLUDES=${S}/libcxx/include \
  54. -DLIBCXX_CXX_ABI=libcxxabi \
  55. -DLIBCXX_CXX_ABI_INCLUDE_PATHS=${S}/libcxxabi/include \
  56. -DLIBCXX_CXX_ABI_LIBRARY_PATH=${B}/lib${LLVM_LIBDIR_SUFFIX} \
  57. -S ${S}/runtimes \
  58. -DLLVM_ENABLE_RUNTIMES='libcxx;libcxxabi;libunwind' \
  59. -DLLVM_LIBDIR_SUFFIX=${LLVM_LIBDIR_SUFFIX} \
  60. -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
  61. "
  62. EXTRA_OECMAKE:append:class-target = " \
  63. -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${AR} \
  64. -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${NM} \
  65. -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${RANLIB} \
  66. -DLLVM_DEFAULT_TARGET_TRIPLE=${HOST_SYS} \
  67. -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  68. "
  69. EXTRA_OECMAKE:append:class-nativesdk = " \
  70. -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${AR} \
  71. -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${NM} \
  72. -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${RANLIB} \
  73. -DLLVM_DEFAULT_TARGET_TRIPLE=${HOST_SYS} \
  74. "
  75. EXTRA_OECMAKE:append:libc-musl = " -DLIBCXX_HAS_MUSL_LIBC=ON "
  76. CXXFLAGS:append:armv5 = " -mfpu=vfp2"
  77. ALLOW_EMPTY:${PN} = "1"
  78. PROVIDES:append:runtime-llvm = " libunwind"
  79. do_install:append() {
  80. if ${@bb.utils.contains("RUNTIME", "llvm", "true", "false", d)}
  81. then
  82. for f in libunwind.h __libunwind_config.h unwind.h unwind_itanium.h unwind_arm_ehabi.h
  83. do
  84. install -Dm 0644 ${S}/libunwind/include/$f ${D}${includedir}/$f
  85. done
  86. install -d ${D}${libdir}/pkgconfig
  87. sed -e 's,@LIBDIR@,${libdir},g;s,@VERSION@,${PV},g' ${S}/../libunwind.pc.in > ${D}${libdir}/pkgconfig/libunwind.pc
  88. fi
  89. }
  90. PACKAGES:append:runtime-llvm = " libunwind"
  91. FILES:libunwind:runtime-llvm = "${libdir}/libunwind.so.*"
  92. BBCLASSEXTEND = "native nativesdk"
  93. TOOLCHAIN:forcevariable = "clang"