@@ -48,13 +48,35 @@ if("${PLATFORM}" STREQUAL "DARWIN")
48
48
set (ENABLE_STATIC_LINK "OFF" )
49
49
endif ()
50
50
51
+
52
+ if (CMAKE_C_COMPILER_ID MATCHES "GNU" )
53
+ set (USING_GCC 1 )
54
+ endif ()
55
+
56
+ if (CMAKE_C_COMPILER_ID MATCHES "Clang" )
57
+ set (USING_CLANG 1 )
58
+ endif ()
59
+
60
+ if (CMAKE_C_COMPILER_ID MATCHES "TI" )
61
+ set (USING_TI 1 )
62
+ endif ()
63
+
51
64
# Status messages
52
65
message (STATUS "CMAKE_BUILD_TYPE " ${CMAKE_BUILD_TYPE} )
53
66
message (STATUS "CMAKE_SYSTEM_NAME " ${CMAKE_SYSTEM_NAME} )
54
67
message (STATUS "CMAKE_SYSTEM_PROCESSOR " ${CMAKE_SYSTEM_PROCESSOR} )
55
68
message (STATUS "ENABLE_ALL_IN_ONE " ${ENABLE_ALL_IN_ONE} )
56
69
message (STATUS "ENABLE_LTO " ${ENABLE_LTO} )
57
- message (STATUS "ENABLE_STATIC_LINK " ${ENABLE_STATIC_LINK} )
70
+
71
+ if (USING_TI )
72
+ # if using a compiler that _only_ does static linking, inform the user
73
+ # of the discrepancy in settings
74
+ set (ENABLE_STATIC_LINK "ON" )
75
+ message (STATUS "ENABLE_STATIC_LINK " ${ENABLE_STATIC_LINK} " (ONLY OPTION FOR THIS COMPILER)" )
76
+ else ()
77
+ message (STATUS "ENABLE_STATIC_LINK " ${ENABLE_STATIC_LINK} )
78
+ endif ()
79
+
58
80
message (STATUS "ENABLE_STRIP " ${ENABLE_STRIP} )
59
81
message (STATUS "JERRY_CMDLINE " ${JERRY_CMDLINE} )
60
82
message (STATUS "JERRY_CMDLINE_MINIMAL " ${JERRY_CMDLINE_MINIMAL} )
@@ -91,7 +113,7 @@ endmacro()
91
113
macro (jerry_add_compile_warnings )
92
114
foreach (_warning ${ARGV} )
93
115
jerry_add_compile_flags (-W${_warning} )
94
- if (CMAKE_COMPILER_IS_GNUCC )
116
+ if (USING_GCC )
95
117
jerry_add_compile_flags (-Werror=${_warning} )
96
118
endif ()
97
119
endforeach ()
@@ -101,27 +123,39 @@ macro(jerry_add_link_flags)
101
123
jerry_add_flags (LINKER_FLAGS_COMMON ${ARGV} )
102
124
endmacro ()
103
125
126
+ # build mode specific compile/link flags
127
+ if (USING_GCC OR USING_CLANG )
128
+ set (CMAKE_C_FLAGS_RELEASE "-Os" )
129
+ endif ()
130
+
104
131
# Architecture-specific compile/link flags
105
132
jerry_add_compile_flags (${FLAGS_COMMON_ARCH} )
106
133
jerry_add_flags (CMAKE_EXE_LINKER_FLAGS ${FLAGS_COMMON_ARCH} )
107
134
108
135
# Enable static build
109
136
if (ENABLE_STATIC_LINK )
110
- jerry_add_link_flags ("-static" )
137
+ if (USING_GCC OR USING_CLANG )
138
+ jerry_add_link_flags ("-static" )
139
+ endif ()
111
140
endif ()
112
141
113
142
# LTO
114
143
if (ENABLE_LTO )
115
- jerry_add_compile_flags (-flto )
116
- jerry_add_link_flags (-flto )
117
- if (CMAKE_COMPILER_IS_GNUCC )
144
+ if (USING_GCC OR USING_CLANG )
145
+ jerry_add_compile_flags (-flto )
146
+ jerry_add_link_flags (-flto )
147
+ endif ()
148
+ if (USING_GCC )
118
149
if (NOT "${PLATFORM} " STREQUAL "DARWIN" )
119
150
jerry_add_compile_flags (-fno-fat-lto-objects )
120
151
endif ()
121
152
# Use gcc-ar and gcc-ranlib to support LTO
122
153
set (CMAKE_AR "gcc-ar" )
123
154
set (CMAKE_RANLIB "gcc-ranlib" )
124
155
endif ()
156
+ if (USING_TI )
157
+ jerry_add_link_flags (-lto )
158
+ endif ()
125
159
endif ()
126
160
127
161
# Define _BSD_SOURCE and _DEFAULT_SOURCE if we use default port and compiler default libc
@@ -130,7 +164,9 @@ if(${PORT_DIR} STREQUAL "${CMAKE_SOURCE_DIR}/targets/default" AND NOT JERRY_LIBC
130
164
endif ()
131
165
132
166
# Compiler / Linker flags
133
- jerry_add_compile_flags (-fno-builtin )
167
+ if (USING_GCC OR USING_CLANG )
168
+ jerry_add_compile_flags (-fno-builtin )
169
+ endif ()
134
170
if (("${PLATFORM} " STREQUAL "DARWIN" ))
135
171
jerry_add_link_flags (-lSystem )
136
172
else ()
@@ -143,17 +179,18 @@ if(JERRY_LIBC)
143
179
endif ()
144
180
145
181
# Turn off stack protector
182
+ if (USING_GCC OR USING_CLANG )
146
183
jerry_add_compile_flags (-fno-stack-protector )
184
+ endif ()
147
185
148
- # Debug information
149
- jerry_add_compile_flags (-g )
150
-
151
- jerry_add_compile_warnings (all extra format-nonliteral init-self conversion sign-conversion format-security missing-declarations )
152
- jerry_add_compile_flags (-Wno-stack-protector -Wno-attributes )
186
+ if (USING_GCC OR USING_CLANG )
187
+ jerry_add_compile_warnings (all extra format-nonliteral init-self conversion sign-conversion format-security missing-declarations )
188
+ jerry_add_compile_flags (-Wno-stack-protector -Wno-attributes )
189
+ endif ()
153
190
154
- if (CMAKE_COMPILER_IS_GNUCC )
191
+ if (USING_GCC )
155
192
jerry_add_compile_warnings (logical-op )
156
- else ( )
193
+ elseif ( USING_CLANG )
157
194
jerry_add_compile_flags (-Wno-nested-anon-types -Wno-static-in-inline )
158
195
endif ()
159
196
@@ -162,11 +199,17 @@ if(JERRY_LIBC)
162
199
endif ()
163
200
164
201
# C
165
- jerry_add_compile_flags (-std=c99 -pedantic )
202
+ if (USING_GCC OR USING_CLANG )
203
+ jerry_add_compile_flags (-std=c99 -pedantic )
204
+ elseif (USING_TI )
205
+ jerry_add_compile_flags (--c99 )
206
+ endif ()
166
207
167
208
# Strip binary
168
209
if (ENABLE_STRIP AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug" )
169
- jerry_add_link_flags (-s )
210
+ if (USING_GCC OR USING_CLANG )
211
+ jerry_add_link_flags (-s )
212
+ endif ()
170
213
endif ()
171
214
172
215
# External compiler & linker flags
0 commit comments