1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
include_guard()
include(Compiler/CMakeCommonCompilerMacros)
macro(__compiler_renesas lang)
if(CMAKE_${lang}_COMPILER_ARCHITECTURE_ID STREQUAL "RX")
# CC-RX
# Pass directly include and define flag to the assembler.
if ("${lang}" STREQUAL "ASM")
set(_ASM_PREFIX "-asmopt=")
endif()
set(CMAKE_INCLUDE_FLAG_${lang} "${_ASM_PREFIX}-include=")
set(CMAKE_${lang}_DEFINE_FLAG "${_ASM_PREFIX}-define=")
set(CMAKE_LINK_LIBRARY_FLAG "-lnkopt=-library=")
set(CMAKE_${lang}_RESPONSE_FILE_FLAG "-subcommand=")
set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-lnkopt=" "")
set(_RENESAS_DEBUG_FLAG "-debug")
if (CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 3.02)
string(APPEND _RENESAS_DEBUG_FLAG " -g_line")
endif()
string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -optimize=0 ${_RENESAS_DEBUG_FLAG}")
string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " ${CMAKE_${lang}_DEFINE_FLAG}NDEBUG=1")
string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " ${_RENESAS_DEBUG_FLAG} ${CMAKE_${lang}_DEFINE_FLAG}NDEBUG=1")
string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -size ${CMAKE_${lang}_DEFINE_FLAG}NDEBUG=1")
set(_PREP_OUT "-output=prep=<PREPROCESSED_SOURCE>")
set(_ASM_OUT "-output=src=<ASSEMBLY_SOURCE>")
set(_OBJ_OUT "-output=obj=<OBJECT>")
set(_EXE_OUT "-output=abs=<TARGET>")
if ("${lang}" STREQUAL "ASM")
# Assembler dependency.
set(_DEP_OUT "${_ASM_PREFIX}-MM ${_ASM_PREFIX}-MT=<OBJECT> ${_ASM_PREFIX}-MF=<DEP_FILE>")
else()
# Compiler dependency.
set(_DEP_OUT "-MM -MT=<OBJECT> -output=dep=<DEP_FILE>")
endif()
elseif(CMAKE_${lang}_COMPILER_ARCHITECTURE_ID STREQUAL "RL78")
# CC-RL
# Pass directly include and define flag to the assembler.
if ("${lang}" STREQUAL "ASM")
set(_ASM_PREFIX "-asmopt=")
set(CMAKE_INCLUDE_FLAG_${lang} "${_ASM_PREFIX}-include=")
set(CMAKE_${lang}_DEFINE_FLAG "${_ASM_PREFIX}-define=")
endif()
set(CMAKE_LINK_LIBRARY_FLAG "-lnkopt=-library=")
set(CMAKE_${lang}_RESPONSE_FILE_FLAG "-subcommand=")
set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-lnkopt=" "")
set(_RENESAS_DEBUG_FLAG "-g")
if (CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 1.02)
string(APPEND _RENESAS_DEBUG_FLAG " -g_line")
endif()
string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -Onothing ${_RENESAS_DEBUG_FLAG}")
string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " ${CMAKE_${lang}_DEFINE_FLAG}NDEBUG")
string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " ${_RENESAS_DEBUG_FLAG} ${CMAKE_${lang}_DEFINE_FLAG}NDEBUG")
string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Osize ${CMAKE_${lang}_DEFINE_FLAG}NDEBUG")
set(_PREP_OUT "-P -o <PREPROCESSED_SOURCE>")
set(_ASM_OUT "-S -o <ASSEMBLY_SOURCE>")
set(_OBJ_OUT "-c -o <OBJECT>")
set(_EXE_OUT "-o <TARGET>")
set(_DEP_OUT "-M -MT=<OBJECT> -o <DEP_FILE>")
# Assembler dependency. -c is required to avoid to process to link
if ("${lang}" STREQUAL "ASM")
set(_DEP_OUT "-c ${_ASM_PREFIX}-MM ${_ASM_PREFIX}-MT=<OBJECT> ${_ASM_PREFIX}-MF=<DEP_FILE>")
endif()
elseif(CMAKE_${lang}_COMPILER_ARCHITECTURE_ID STREQUAL "RH850")
# CC-RH
set(CMAKE_LINK_LIBRARY_FLAG "-Xlk_option=-library=")
set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Xlk_option=" "")
# Pass directly include and define flag to the assembler.
if ("${lang}" STREQUAL "ASM")
set(_ASM_PREFIX "-Xasm_option=")
set(CMAKE_INCLUDE_FLAG_${lang} "${_ASM_PREFIX}-I")
set(CMAKE_${lang}_DEFINE_FLAG "${_ASM_PREFIX}-D")
endif()
set(_RENESAS_DEBUG_FLAG "-g")
if (CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 1.05)
string(APPEND _RENESAS_DEBUG_FLAG " -g_line")
endif()
string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -Onothing ${_RENESAS_DEBUG_FLAG}")
string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " ${CMAKE_${lang}_DEFINE_FLAG}NDEBUG")
string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " ${_RENESAS_DEBUG_FLAG} ${CMAKE_${lang}_DEFINE_FLAG}NDEBUG")
string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Osize ${CMAKE_${lang}_DEFINE_FLAG}NDEBUG")
set(_PREP_OUT "-P -o<PREPROCESSED_SOURCE>")
set(_ASM_OUT "-S -o<ASSEMBLY_SOURCE>")
set(_OBJ_OUT "-c -o<OBJECT>")
set(_EXE_OUT "-o<TARGET>")
set(_DEP_OUT "-M -o<DEP_FILE>")
# Assembler dependency. -c is required to avoid to process to link
if ("${lang}" STREQUAL "ASM")
set(_DEP_OUT "-c ${_ASM_PREFIX}-MM ${_ASM_PREFIX}-MT=<OBJECT> ${_ASM_PREFIX}-MF=<DEP_FILE>")
endif()
# Otherwise, not supported architecture.
else()
message(FATAL_ERROR "Architecture for Renesas compiler: ${CMAKE_${lang}_COMPILER_ARCHITECTURE_ID} is not supported.")
endif()
# Common
set(CMAKE_EXECUTABLE_SUFFIX ".abs")
set(CMAKE_EXECUTABLE_SUFFIX_${lang} ".abs")
set(CMAKE_STATIC_LIBRARY_PREFIX "")
set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib")
set(CMAKE_${lang}_DEPENDS_USE_COMPILER TRUE)
set(CMAKE_${lang}_DEPFILE_FORMAT custom)
# This is supported only when link process is called from driver.
set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "${CMAKE_${lang}_RESPONSE_FILE_FLAG}")
# Compile commands
set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> <SOURCE> <DEFINES> <INCLUDES> <FLAGS> ${_PREP_OUT}")
set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER> <SOURCE> <DEFINES> <INCLUDES> <FLAGS> ${_ASM_OUT}")
set(CMAKE_${lang}_COMPILE_OBJECT "<CMAKE_${lang}_COMPILER> <SOURCE> <DEFINES> <INCLUDES> <FLAGS> ${_OBJ_OUT}")
set(CMAKE_${lang}_LINK_EXECUTABLE "<CMAKE_${lang}_COMPILER> <FLAGS> <LINK_FLAGS> <OBJECTS> <LINK_LIBRARIES> ${_EXE_OUT}")
set(CMAKE_${lang}_DEPENDS_EXTRA_COMMANDS "<CMAKE_${lang}_COMPILER> <SOURCE> <DEFINES> <INCLUDES> <FLAGS> ${_DEP_OUT}")
# Link/Archive commands. Use rlink as the linker and archiver.
get_filename_component(_RENESAS_CC_PATH ${CMAKE_${lang}_COMPILER} DIRECTORY NO_CACHE)
set(_RLINK "\"${_RENESAS_CC_PATH}/rlink\"")
set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "${_RLINK} -nologo -form=library -output=<TARGET> <LINK_FLAGS> <OBJECTS>")
set(CMAKE_${lang}_ARCHIVE_CREATE "${_RLINK} -nologo -form=library -output=<TARGET> <LINK_FLAGS> <OBJECTS>")
set(CMAKE_${lang}_ARCHIVE_APPEND "${_RLINK} -nologo -form=library -output=<TARGET> -library=<TARGET> <LINK_FLAGS> <OBJECTS>")
set(CMAKE_${lang}_ARCHIVE_FINISH "")
endmacro()
|