| |
| 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() |