1*4882a593Smuzhiyun# Native C/C++ compiler (without cpu arch/tune arguments) 2*4882a593SmuzhiyunOECMAKE_NATIVE_C_COMPILER ?= "`echo ${BUILD_CC} | sed 's/^\([^ ]*\).*/\1/'`" 3*4882a593SmuzhiyunOECMAKE_NATIVE_CXX_COMPILER ?= "`echo ${BUILD_CXX} | sed 's/^\([^ ]*\).*/\1/'`" 4*4882a593SmuzhiyunOECMAKE_NATIVE_AR ?= "${BUILD_AR}" 5*4882a593SmuzhiyunOECMAKE_NATIVE_RANLIB ?= "${BUILD_RANLIB}" 6*4882a593SmuzhiyunOECMAKE_NATIVE_NM ?= "${BUILD_NM}" 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun# Native compiler flags 9*4882a593SmuzhiyunOECMAKE_NATIVE_C_FLAGS ?= "${BUILD_CC_ARCH} ${BUILD_CFLAGS}" 10*4882a593SmuzhiyunOECMAKE_NATIVE_CXX_FLAGS ?= "${BUILD_CC_ARCH} ${BUILD_CXXFLAGS}" 11*4882a593SmuzhiyunOECMAKE_NATIVE_C_FLAGS_RELEASE ?= "-DNDEBUG" 12*4882a593SmuzhiyunOECMAKE_NATIVE_CXX_FLAGS_RELEASE ?= "-DNDEBUG" 13*4882a593SmuzhiyunOECMAKE_NATIVE_C_LINK_FLAGS ?= "${BUILD_CC_ARCH} ${BUILD_CPPFLAGS} ${BUILD_LDFLAGS}" 14*4882a593SmuzhiyunOECMAKE_NATIVE_CXX_LINK_FLAGS ?= "${BUILD_CC_ARCH} ${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}" 15*4882a593SmuzhiyunBUILD_CXXFLAGS += "${BUILD_CC_ARCH}" 16*4882a593SmuzhiyunBUILD_CFLAGS += "${BUILD_CC_ARCH}" 17*4882a593Smuzhiyun 18*4882a593Smuzhiyundo_generate_native_toolchain_file() { 19*4882a593Smuzhiyun cat > ${WORKDIR}/toolchain-native.cmake <<EOF 20*4882a593Smuzhiyunset( CMAKE_SYSTEM_NAME `echo ${BUILD_OS} | sed -e 's/^./\u&/' -e 's/^\(Linux\).*/\1/'` ) 21*4882a593Smuzhiyunset( CMAKE_SYSTEM_PROCESSOR ${BUILD_ARCH} ) 22*4882a593Smuzhiyunset( CMAKE_C_COMPILER ${OECMAKE_NATIVE_C_COMPILER} ) 23*4882a593Smuzhiyunset( CMAKE_CXX_COMPILER ${OECMAKE_NATIVE_CXX_COMPILER} ) 24*4882a593Smuzhiyunset( CMAKE_ASM_COMPILER ${OECMAKE_NATIVE_C_COMPILER} ) 25*4882a593Smuzhiyunset( CMAKE_AR ${OECMAKE_NATIVE_AR} CACHE FILEPATH "Archiver" ) 26*4882a593Smuzhiyunset( CMAKE_RANLIB ${OECMAKE_NATIVE_RANLIB} CACHE FILEPATH "Archive Indexer" ) 27*4882a593Smuzhiyunset( CMAKE_NM ${OECMAKE_NATIVE_NM} CACHE FILEPATH "Symbol Lister" ) 28*4882a593Smuzhiyunset( CMAKE_C_FLAGS "${OECMAKE_NATIVE_C_FLAGS}" CACHE STRING "CFLAGS" ) 29*4882a593Smuzhiyunset( CMAKE_CXX_FLAGS "${OECMAKE_NATIVE_CXX_FLAGS}" CACHE STRING "CXXFLAGS" ) 30*4882a593Smuzhiyunset( CMAKE_ASM_FLAGS "${OECMAKE_NATIVE_C_FLAGS}" CACHE STRING "ASM FLAGS" ) 31*4882a593Smuzhiyunset( CMAKE_C_FLAGS_RELEASE "${OECMAKE_NATIVE_C_FLAGS_RELEASE}" CACHE STRING "Additional CFLAGS for release" ) 32*4882a593Smuzhiyunset( CMAKE_CXX_FLAGS_RELEASE "${OECMAKE_NATIVE_CXX_FLAGS_RELEASE}" CACHE STRING "Additional CXXFLAGS for release" ) 33*4882a593Smuzhiyunset( CMAKE_ASM_FLAGS_RELEASE "${OECMAKE_NATIVE_C_FLAGS_RELEASE}" CACHE STRING "Additional ASM FLAGS for release" ) 34*4882a593Smuzhiyunset( CMAKE_C_LINK_FLAGS "${OECMAKE_NATIVE_C_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) 35*4882a593Smuzhiyunset( CMAKE_CXX_LINK_FLAGS "${OECMAKE_NATIVE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) 36*4882a593Smuzhiyun 37*4882a593Smuzhiyunset( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_NATIVE} ) 38*4882a593Smuzhiyunset( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY ) 39*4882a593Smuzhiyunset( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH ) 40*4882a593Smuzhiyunset( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) 41*4882a593Smuzhiyunset( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun# Use native cmake modules 44*4882a593Smuzhiyunlist(APPEND CMAKE_MODULE_PATH "${STAGING_DATADIR_NATIVE}/cmake/Modules/") 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun# add for non /usr/lib libdir, e.g. /usr/lib64 47*4882a593Smuzhiyunset( CMAKE_LIBRARY_PATH ${STAGING_BASE_LIBDIR_NATIVE} ${STAGING_LIBDIR_NATIVE}) 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun# add include dir to implicit includes in case it differs from /usr/include 50*4882a593Smuzhiyunlist(APPEND CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES ${STAGING_INCDIR_NATIVE}) 51*4882a593Smuzhiyunlist(APPEND CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES ${STAGING_INCDIR_NATIVE}) 52*4882a593Smuzhiyun 53*4882a593SmuzhiyunEOF 54*4882a593Smuzhiyun} 55*4882a593Smuzhiyun 56*4882a593Smuzhiyunaddtask generate_native_toolchain_file after do_patch before do_configure 57