@@ -92,7 +92,13 @@ project (Jerry CXX C ASM)
92
92
set (MCU_SCRIPT_GENERATED_HEADER ${CMAKE_BINARY_DIR} /generated.h )
93
93
94
94
# Should we use external libc?
95
- if (NOT DEFINED EXTERNAL_LIBC_INTERFACE OR EXTERNAL_LIBC_INTERFACE STREQUAL "UNDEFINED" )
95
+ if (DEFINED USE_COMPILER_DEFAULT_LIBC AND USE_COMPILER_DEFAULT_LIBC STREQUAL "YES" )
96
+ if (NOT EXTERNAL_LIBC_INTERFACE STREQUAL "" AND NOT EXTERNAL_LIBC_INTERFACE STREQUAL "UNDEFINED" )
97
+ message (FATAL_ERROR "EXTERNAL_LIBC_INTERFACE='${EXTERNAL_LIBC_INTERFACE} ' should not be set in case compiler's default libc is used (USE_COMPILER_DEFAULT_LIBC=YES)" )
98
+ endif ()
99
+
100
+ set (USE_JERRY_LIBC FALSE )
101
+ elseif (NOT DEFINED EXTERNAL_LIBC_INTERFACE OR EXTERNAL_LIBC_INTERFACE STREQUAL "UNDEFINED" )
96
102
set (USE_JERRY_LIBC TRUE )
97
103
else ()
98
104
set (USE_JERRY_LIBC FALSE )
@@ -180,6 +186,11 @@ project (Jerry CXX C ASM)
180
186
set (COMPILE_FLAGS_JERRY "-fno-builtin" )
181
187
set (LINKER_FLAGS_COMMON "-Wl,-z,noexecstack" )
182
188
189
+ # Turn off linking to compiler's default libc, in case jerry-libc is used
190
+ if (${USE_JERRY_LIBC} )
191
+ set (LINKER_FLAGS_COMMON "${LINKER_FLAGS_COMMON} -nostdlib" )
192
+ endif ()
193
+
183
194
# LTO
184
195
if ("${ENABLE_LTO} " STREQUAL "ON" )
185
196
set (COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -flto -fno-fat-lto-objects" )
@@ -219,13 +230,13 @@ project (Jerry CXX C ASM)
219
230
set (LINKER_FLAGS_COMMON_MCU_STM32F4 "-T${CMAKE_SOURCE_DIR} /third-party/STM32F4-Discovery_FW_V1.1.0/Project/Peripheral_Examples/FLASH_Program/TrueSTUDIO/FLASH_Program/stm32_flash.ld" )
220
231
221
232
# Debug
222
- set (FLAGS_COMMON_DEBUG "-nostdlib " )
233
+ set (FLAGS_COMMON_DEBUG "" )
223
234
224
235
# Release
225
- set (FLAGS_COMMON_RELEASE "-Os -nostdlib " )
236
+ set (FLAGS_COMMON_RELEASE "-Os" )
226
237
227
238
# Unit tests
228
- set (FLAGS_COMMON_UNITTESTS "-O3 -nostdlib " )
239
+ set (FLAGS_COMMON_UNITTESTS "-O3" )
229
240
230
241
# Include directories
231
242
# Core interface
@@ -249,13 +260,6 @@ project (Jerry CXX C ASM)
249
260
file (GLOB SOURCE_UNIT_TEST_MAIN_MODULES tests/unit/*.cpp )
250
261
251
262
# Imported libraries
252
- # libc
253
- add_library (${PREFIX_IMPORTED_LIB} libc SHARED IMPORTED )
254
- execute_process (COMMAND ${CMAKE_C_COMPILER} ${FLAGS_COMMON_ARCH} -print-file-name=libc.so
255
- OUTPUT_VARIABLE IMPORTED_LIBC_LOCATION
256
- OUTPUT_STRIP_TRAILING_WHITESPACE )
257
- set_property (TARGET ${PREFIX_IMPORTED_LIB} libc
258
- PROPERTY IMPORTED_LOCATION ${IMPORTED_LIBC_LOCATION} )
259
263
# libgcc
260
264
add_library (${PREFIX_IMPORTED_LIB} libgcc STATIC IMPORTED )
261
265
execute_process (COMMAND ${CMAKE_C_COMPILER} ${FLAGS_COMMON_ARCH} -print-file-name=libgcc.a
@@ -299,7 +303,9 @@ project (Jerry CXX C ASM)
299
303
300
304
function (declare_targets_for_build_mode BUILD_MODE )
301
305
set (TARGET_NAME ${BUILD_MODE_PREFIX_${BUILD_MODE}}.${PLATFORM_L} )
302
- set (LIBC_TARGET_NAME ${BUILD_MODE_PREFIX_${BUILD_MODE}}.jerry-libc.${PLATFORM_L}.lib )
306
+ if (${USE_JERRY_LIBC} )
307
+ set (LIBC_TARGET_NAME ${BUILD_MODE_PREFIX_${BUILD_MODE}}.jerry-libc.${PLATFORM_L}.lib )
308
+ endif ()
303
309
304
310
function (declare_target_with_modifiers ) # modifiers are passed in ARGN implicit argument
305
311
set (CORE_TARGET_NAME ${BUILD_MODE_PREFIX_${BUILD_MODE}} )
@@ -408,7 +414,9 @@ project (Jerry CXX C ASM)
408
414
set (TARGET_NAME unit-${TARGET_NAME} )
409
415
410
416
set (CORE_TARGET_NAME unittests.jerry-core )
411
- set (LIBC_TARGET_NAME unittests.jerry-libc.${PLATFORM_L}.lib )
417
+ if (${USE_JERRY_LIBC} )
418
+ set (LIBC_TARGET_NAME unittests.jerry-libc.${PLATFORM_L}.lib )
419
+ endif ()
412
420
set (FDLIBM_TARGET_NAME unittests.jerry-fdlibm${SUFFIX_THIRD_PARTY_LIB} )
413
421
414
422
add_executable (${TARGET_NAME} ${SOURCE_UNIT_TEST_MAIN} )
0 commit comments