mirror of
https://github.com/arabine/open-story-teller.git
synced 2025-12-06 17:09:06 +01:00
79 lines
3.6 KiB
CMake
79 lines
3.6 KiB
CMake
##
|
||
## Author: Anthony Rabine
|
||
## License: See LICENSE.TXT file included in the project
|
||
##
|
||
##
|
||
## CMake riscv64-unknown-elf toolchain file
|
||
##
|
||
|
||
# Append current directory to CMAKE_MODULE_PATH for making device specific cmake modules visible
|
||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
|
||
|
||
# Target definition
|
||
set(CMAKE_SYSTEM_NAME Generic)
|
||
set(CMAKE_SYSTEM_PROCESSOR RISC-V)
|
||
|
||
#---------------------------------------------------------------------------------------
|
||
# Set toolchain paths
|
||
#---------------------------------------------------------------------------------------
|
||
if(NOT DEFINED TOOLCHAIN_DIR)
|
||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL Linux)
|
||
set(TOOLCHAIN_DIR "/usr")
|
||
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin)
|
||
set(TOOLCHAIN_DIR "/usr/local")
|
||
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Windows)
|
||
message(STATUS "Please specify the TOOLCHAIN_DIR !\n For example: -DTOOLCHAIN_DIR=\"C:/Program Files/GNU Tools ARM Embedded\" ")
|
||
else()
|
||
set(TOOLCHAIN_DIR "/usr")
|
||
message(STATUS "No TOOLCHAIN_DIR specified, using default: " ${TOOLCHAIN_DIR})
|
||
endif()
|
||
endif()
|
||
set(TOOLCHAIN_BIN_DIR ${TOOLCHAIN_DIR}/bin)
|
||
set(TOOLCHAIN_INC_DIR ${TOOLCHAIN_DIR}/${TOOLCHAIN}/include)
|
||
set(TOOLCHAIN_LIB_DIR ${TOOLCHAIN_DIR}/${TOOLCHAIN}/lib)
|
||
|
||
# Set system depended extensions
|
||
if(WIN32)
|
||
set(TOOLCHAIN_EXT ".exe" )
|
||
else()
|
||
set(TOOLCHAIN_EXT "" )
|
||
endif()
|
||
|
||
# Perform compiler test with static library
|
||
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||
|
||
#---------------------------------------------------------------------------------------
|
||
# Set debug/release build configuration Options
|
||
#---------------------------------------------------------------------------------------
|
||
|
||
# Options for DEBUG build
|
||
# -Og Enables optimizations that do not interfere with debugging.
|
||
# -g Produce debugging information in the operating system’s native format.
|
||
set(CMAKE_C_FLAGS_DEBUG "-Og -g -gdwarf-3 -gstrict-dwarf" CACHE INTERNAL "C Compiler options for debug build type")
|
||
set(CMAKE_CXX_FLAGS_DEBUG "-Og -g -gdwarf-3 -gstrict-dwarf" CACHE INTERNAL "C++ Compiler options for debug build type")
|
||
set(CMAKE_ASM_FLAGS_DEBUG "-g -gdwarf-3 -gstrict-dwarf" CACHE INTERNAL "ASM Compiler options for debug build type")
|
||
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "" CACHE INTERNAL "Linker options for debug build type")
|
||
|
||
# Options for RELEASE build
|
||
# -Os Optimize for size. -Os enables all -O2 optimizations.
|
||
# -flto Runs the standard link-time optimizer.
|
||
set(CMAKE_C_FLAGS_RELEASE "-Os -flto" CACHE INTERNAL "C Compiler options for release build type")
|
||
set(CMAKE_CXX_FLAGS_RELEASE "-Os -flto" CACHE INTERNAL "C++ Compiler options for release build type")
|
||
set(CMAKE_ASM_FLAGS_RELEASE "" CACHE INTERNAL "ASM Compiler options for release build type")
|
||
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-flto" CACHE INTERNAL "Linker options for release build type")
|
||
|
||
|
||
#---------------------------------------------------------------------------------------
|
||
# Set compilers
|
||
#---------------------------------------------------------------------------------------
|
||
set(CMAKE_C_COMPILER ${TOOLCHAIN_BIN_DIR}/${TOOLCHAIN}-gcc${TOOLCHAIN_EXT} CACHE INTERNAL "C Compiler")
|
||
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_BIN_DIR}/${TOOLCHAIN}-g++${TOOLCHAIN_EXT} CACHE INTERNAL "C++ Compiler")
|
||
set(CMAKE_ASM_COMPILER ${TOOLCHAIN_BIN_DIR}/${TOOLCHAIN}-gcc${TOOLCHAIN_EXT} CACHE INTERNAL "ASM Compiler")
|
||
|
||
set(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR}/${${TOOLCHAIN}} ${CMAKE_PREFIX_PATH})
|
||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||
|