File: Renesas.cmake

package info (click to toggle)
cmake 4.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 147,284 kB
  • sloc: ansic: 403,915; cpp: 290,772; sh: 4,102; python: 3,357; yacc: 3,106; lex: 1,189; f90: 532; asm: 471; lisp: 375; cs: 270; java: 266; fortran: 230; perl: 217; objc: 215; xml: 198; makefile: 97; javascript: 83; pascal: 63; tcl: 55; php: 25; ruby: 22
file content (140 lines) | stat: -rw-r--r-- 6,527 bytes parent folder | download
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()