61 lines
1.8 KiB
CMake
61 lines
1.8 KiB
CMake
get_filename_component(target ${CMAKE_CURRENT_LIST_FILE} NAME)
|
|
|
|
string(REPLACE ".cmake" "" target "${target}")
|
|
string(REGEX REPLACE "^.*-([^-]*)\$" "\\1" cc "${target}")
|
|
string(REGEX REPLACE "-[^-]*\$" "" target "${target}")
|
|
string(REGEX REPLACE "-.*" "" CMAKE_SYSTEM_PROCESSOR "${target}")
|
|
|
|
if(target MATCHES linux)
|
|
set(CMAKE_SYSTEM_NAME Linux)
|
|
elseif(target MATCHES "mingw|win")
|
|
set(CMAKE_SYSTEM_NAME Windows)
|
|
else()
|
|
message(FATAL_ERROR "Failed to detect CMAKE_SYSTEM_NAME from target ${target}")
|
|
return()
|
|
endif()
|
|
set(CMAKE_CROSSCOMPILING TRUE)
|
|
|
|
if(cc STREQUAL "gcc")
|
|
set(cxx "g++")
|
|
elseif(cc STREQUAL "cc")
|
|
set(cxx "c++")
|
|
elseif(cc STREQUAL "icc")
|
|
set(cxx "icpc")
|
|
else()
|
|
set(cxx "${cc}++")
|
|
endif()
|
|
|
|
set(cross ${target}-)
|
|
|
|
set(CMAKE_AR ${cross}ar)
|
|
#set(CMAKE_ASM_COMPILER ${cross}as)
|
|
set(CMAKE_C_COMPILER ${cross}${cc})
|
|
set(CMAKE_CXX_COMPILER ${cross}${cxx})
|
|
set(CMAKE_LINKER ${cross}ld)
|
|
set(CMAKE_OBJCOPY ${cross}objcopy CACHE INTERNAL "")
|
|
set(CMAKE_RANLIB ${cross}ranlib CACHE INTERNAL "")
|
|
set(CMAKE_SIZE ${cross}size CACHE INTERNAL "")
|
|
set(CMAKE_STRIP ${cross}strip CACHE INTERNAL "")
|
|
set(CMAKE_GCOV ${cross}gcov CACHE INTERNAL "")
|
|
|
|
|
|
# Where to look for the target environment. (More paths can be added here)
|
|
set(CMAKE_FIND_ROOT_PATH /usr/${target})
|
|
set(CMAKE_INCLUDE_PATH /usr/include/${target})
|
|
set(CMAKE_LIBRARY_PATH /usr/lib/${target})
|
|
set(CMAKE_PROGRAM_PATH /usr/${target}/bin)
|
|
|
|
# Adjust the default behavior of the FIND_XXX() commands:
|
|
# search programs in the host environment only.
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
|
|
# Search headers and libraries in the target environment only.
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
|
|
|
unset(cross)
|
|
unset(cxx)
|
|
unset(cc)
|
|
unset(target)
|