From eb8dc40360f0cfef56fb6947cc817a547d6d9bc6 Mon Sep 17 00:00:00 2001 From: Dave Cobbley Date: Tue, 14 Aug 2018 10:05:37 -0700 Subject: [Subtree] Removing import-layers directory As part of the move to subtrees, need to bring all the import layers content to the top level. Change-Id: I4a163d10898cbc6e11c27f776f60e1a470049d8f Signed-off-by: Dave Cobbley Signed-off-by: Brad Bishop --- poky/meta/classes/cmake.bbclass | 175 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 poky/meta/classes/cmake.bbclass (limited to 'poky/meta/classes/cmake.bbclass') diff --git a/poky/meta/classes/cmake.bbclass b/poky/meta/classes/cmake.bbclass new file mode 100644 index 0000000000..fcfd5dda4f --- /dev/null +++ b/poky/meta/classes/cmake.bbclass @@ -0,0 +1,175 @@ +# Path to the CMake file to process. +OECMAKE_SOURCEPATH ??= "${S}" + +DEPENDS_prepend = "cmake-native " +B = "${WORKDIR}/build" + +# We need to unset CCACHE otherwise cmake gets too confused +CCACHE = "" + +# What CMake generator to use. +# The supported options are "Unix Makefiles" or "Ninja". +OECMAKE_GENERATOR ?= "Ninja" + +python() { + generator = d.getVar("OECMAKE_GENERATOR") + if generator == "Unix Makefiles": + args = "-G 'Unix Makefiles' -DCMAKE_MAKE_PROGRAM=" + d.getVar("MAKE") + d.setVar("OECMAKE_GENERATOR_ARGS", args) + d.setVarFlag("do_compile", "progress", "percent") + elif generator == "Ninja": + d.appendVar("DEPENDS", " ninja-native") + d.setVar("OECMAKE_GENERATOR_ARGS", "-G Ninja -DCMAKE_MAKE_PROGRAM=ninja") + d.setVarFlag("do_compile", "progress", "outof:^\[(\d+)/(\d+)\]\s+") + else: + bb.fatal("Unknown CMake Generator %s" % generator) +} +# C/C++ Compiler (without cpu arch/tune arguments) +OECMAKE_C_COMPILER ?= "`echo ${CC} | sed 's/^\([^ ]*\).*/\1/'`" +OECMAKE_CXX_COMPILER ?= "`echo ${CXX} | sed 's/^\([^ ]*\).*/\1/'`" +OECMAKE_AR ?= "${AR}" + +# Compiler flags +OECMAKE_C_FLAGS ?= "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} ${CFLAGS}" +OECMAKE_CXX_FLAGS ?= "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} ${CXXFLAGS}" +OECMAKE_C_FLAGS_RELEASE ?= "-DNDEBUG" +OECMAKE_CXX_FLAGS_RELEASE ?= "-DNDEBUG" +OECMAKE_C_LINK_FLAGS ?= "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} ${CPPFLAGS} ${LDFLAGS}" +OECMAKE_CXX_LINK_FLAGS ?= "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} ${CXXFLAGS} ${LDFLAGS}" +CXXFLAGS += "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS}" +CFLAGS += "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS}" + +OECMAKE_RPATH ?= "" +OECMAKE_PERLNATIVE_DIR ??= "" +OECMAKE_EXTRA_ROOT_PATH ?= "" + +OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "ONLY" +OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-native = "BOTH" + +EXTRA_OECMAKE_append = " ${PACKAGECONFIG_CONFARGS}" + +EXTRA_OECMAKE_BUILD_prepend_task-compile = "${PARALLEL_MAKE} " +EXTRA_OECMAKE_BUILD_prepend_task-install = "${PARALLEL_MAKEINST} " + +OECMAKE_TARGET_COMPILE ?= "all" +OECMAKE_TARGET_INSTALL ?= "install" + +FILES_${PN}-dev += "${libdir}/cmake ${datadir}/cmake" + +# CMake expects target architectures in the format of uname(2), +# which do not always match TARGET_ARCH, so all the necessary +# conversions should happen here. +def map_target_arch_to_uname_arch(target_arch): + if target_arch == "powerpc": + return "ppc" + if target_arch == "powerpc64": + return "ppc64" + return target_arch + +cmake_do_generate_toolchain_file() { + if [ "${BUILD_SYS}" = "${HOST_SYS}" ]; then + cmake_crosscompiling="set( CMAKE_CROSSCOMPILING FALSE )" + fi + cat > ${WORKDIR}/toolchain.cmake <