diff options
author | Ming Liu <peter.x.liu@external.atlascopco.com> | 2017-08-23 09:26:13 +0200 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2017-08-23 09:10:29 -0700 |
commit | 0ce41d411f9fd8213584e2b9fdc1cbb99910c330 (patch) | |
tree | 02fc33a23e2944e0302f8cfb7f0630476466ca1f /classes | |
parent | 4510752f044a5461e126d370aac0ca646d94d857 (diff) | |
download | meta-clang-0ce41d411f9fd8213584e2b9fdc1cbb99910c330.tar.gz |
clang: fix nativesdk build
I could not manage to build nativesdk-clang, I encountered errors as
follows: (trimmed for purpose)
| ../gcc/x86_64-pokysdk-linux/6.3.0/ld::
| cannot find crt1.o: No such file or directory
| cannot find crtbegin.o: No such file or directory
| cannot find -lgcc
| cannot find -lgcc_s
After some investigation, I found it's caused by the llvm native tools
could not compile with crosssdk toolchains. (special linking flags
are needed)
So we introduce a cmake-native class with a task to generate a native
toolchain file, it will be used to build llvm native tools by passed
with CROSS_TOOLCHAIN_FLAGS_NATIVE.
Signed-off-by: Ming Liu <peter.x.liu@external.atlascopco.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'classes')
-rw-r--r-- | classes/cmake-native.bbclass | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/classes/cmake-native.bbclass b/classes/cmake-native.bbclass new file mode 100644 index 0000000..911476e --- /dev/null +++ b/classes/cmake-native.bbclass | |||
@@ -0,0 +1,47 @@ | |||
1 | # We need to unset CCACHE otherwise cmake gets too confused | ||
2 | CCACHE = "" | ||
3 | |||
4 | # Native C/C++ compiler (without cpu arch/tune arguments) | ||
5 | OECMAKE_NATIVE_C_COMPILER ?= "`echo ${BUILD_CC} | sed 's/^\([^ ]*\).*/\1/'`" | ||
6 | OECMAKE_NATIVE_CXX_COMPILER ?= "`echo ${BUILD_CXX} | sed 's/^\([^ ]*\).*/\1/'`" | ||
7 | OECMAKE_NATIVE_AR ?= "${BUILD_AR}" | ||
8 | |||
9 | # Native compiler flags | ||
10 | OECMAKE_NATIVE_C_FLAGS ?= "${BUILD_CC_ARCH} ${BUILD_CFLAGS}" | ||
11 | OECMAKE_NATIVE_CXX_FLAGS ?= "${BUILD_CC_ARCH} ${BUILD_CXXFLAGS}" | ||
12 | OECMAKE_NATIVE_C_FLAGS_RELEASE ?= "-DNDEBUG" | ||
13 | OECMAKE_NATIVE_CXX_FLAGS_RELEASE ?= "-DNDEBUG" | ||
14 | OECMAKE_NATIVE_C_LINK_FLAGS ?= "${BUILD_CC_ARCH} ${BUILD_CPPFLAGS} ${BUILD_LDFLAGS}" | ||
15 | OECMAKE_NATIVE_CXX_LINK_FLAGS ?= "${BUILD_CC_ARCH} ${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}" | ||
16 | BUILD_CXXFLAGS += "${BUILD_CC_ARCH}" | ||
17 | BUILD_CFLAGS += "${BUILD_CC_ARCH}" | ||
18 | |||
19 | do_generate_native_toolchain_file() { | ||
20 | cat > ${WORKDIR}/toolchain-native.cmake <<EOF | ||
21 | set( CMAKE_SYSTEM_NAME `echo ${BUILD_OS} | sed -e 's/^./\u&/' -e 's/^\(Linux\).*/\1/'` ) | ||
22 | set( CMAKE_SYSTEM_PROCESSOR ${BUILD_ARCH} ) | ||
23 | set( CMAKE_C_COMPILER ${OECMAKE_NATIVE_C_COMPILER} ) | ||
24 | set( CMAKE_CXX_COMPILER ${OECMAKE_NATIVE_CXX_COMPILER} ) | ||
25 | set( CMAKE_ASM_COMPILER ${OECMAKE_NATIVE_C_COMPILER} ) | ||
26 | set( CMAKE_AR ${OECMAKE_NATIVE_AR} CACHE FILEPATH "Archiver" ) | ||
27 | set( CMAKE_C_FLAGS "${OECMAKE_NATIVE_C_FLAGS}" CACHE STRING "CFLAGS" ) | ||
28 | set( CMAKE_CXX_FLAGS "${OECMAKE_NATIVE_CXX_FLAGS}" CACHE STRING "CXXFLAGS" ) | ||
29 | set( CMAKE_ASM_FLAGS "${OECMAKE_NATIVE_C_FLAGS}" CACHE STRING "ASM FLAGS" ) | ||
30 | set( CMAKE_C_FLAGS_RELEASE "${OECMAKE_NATIVE_C_FLAGS_RELEASE}" CACHE STRING "Additional CFLAGS for release" ) | ||
31 | set( CMAKE_CXX_FLAGS_RELEASE "${OECMAKE_NATIVE_CXX_FLAGS_RELEASE}" CACHE STRING "Additional CXXFLAGS for release" ) | ||
32 | set( CMAKE_ASM_FLAGS_RELEASE "${OECMAKE_NATIVE_C_FLAGS_RELEASE}" CACHE STRING "Additional ASM FLAGS for release" ) | ||
33 | set( CMAKE_C_LINK_FLAGS "${OECMAKE_NATIVE_C_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) | ||
34 | set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_NATIVE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) | ||
35 | |||
36 | set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_NATIVE} ) | ||
37 | set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY ) | ||
38 | set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH ) | ||
39 | set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) | ||
40 | set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) | ||
41 | |||
42 | # Use native cmake modules | ||
43 | list(APPEND CMAKE_MODULE_PATH "${STAGING_DATADIR_NATIVE}/cmake/Modules/") | ||
44 | EOF | ||
45 | } | ||
46 | |||
47 | addtask generate_native_toolchain_file after do_patch before do_configure | ||