@@ -92,7 +92,12 @@ 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
+ set (USE_JERRY_LIBC FALSE )
100
+ elseif (NOT DEFINED EXTERNAL_LIBC_INTERFACE OR EXTERNAL_LIBC_INTERFACE STREQUAL "UNDEFINED" )
96
101
set (USE_JERRY_LIBC TRUE )
97
102
98
103
# Jerry's libc doesn't support Nuttx platform
@@ -189,6 +194,11 @@ project (Jerry CXX C ASM)
189
194
set (COMPILE_FLAGS_JERRY "-fno-builtin" )
190
195
set (LINKER_FLAGS_COMMON "-Wl,-z,noexecstack" )
191
196
197
+ # Turn off linking to compiler's default libc, in case jerry-libc is used
198
+ if (${USE_JERRY_LIBC} )
199
+ set (LINKER_FLAGS_COMMON "${LINKER_FLAGS_COMMON} -nostdlib" )
200
+ endif ()
201
+
192
202
# LTO
193
203
if ("${ENABLE_LTO} " STREQUAL "ON" )
194
204
set (COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -flto -fno-fat-lto-objects" )
@@ -228,13 +238,13 @@ project (Jerry CXX C ASM)
228
238
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" )
229
239
230
240
# Debug
231
- set (FLAGS_COMMON_DEBUG "-nostdlib " )
241
+ set (FLAGS_COMMON_DEBUG "" )
232
242
233
243
# Release
234
- set (FLAGS_COMMON_RELEASE "-Os -nostdlib " )
244
+ set (FLAGS_COMMON_RELEASE "-Os" )
235
245
236
246
# Unit tests
237
- set (FLAGS_COMMON_UNITTESTS "-O3 -nostdlib " )
247
+ set (FLAGS_COMMON_UNITTESTS "-O3" )
238
248
239
249
# Include directories
240
250
# Core interface
@@ -261,13 +271,6 @@ project (Jerry CXX C ASM)
261
271
file (GLOB SOURCE_UNIT_TEST_MAIN_MODULES tests/unit/*.cpp )
262
272
263
273
# Imported libraries
264
- # libc
265
- add_library (${PREFIX_IMPORTED_LIB} libc SHARED IMPORTED )
266
- execute_process (COMMAND ${CMAKE_C_COMPILER} ${FLAGS_COMMON_ARCH} -print-file-name=libc.so
267
- OUTPUT_VARIABLE IMPORTED_LIBC_LOCATION
268
- OUTPUT_STRIP_TRAILING_WHITESPACE )
269
- set_property (TARGET ${PREFIX_IMPORTED_LIB} libc
270
- PROPERTY IMPORTED_LOCATION ${IMPORTED_LIBC_LOCATION} )
271
274
# libgcc
272
275
add_library (${PREFIX_IMPORTED_LIB} libgcc STATIC IMPORTED )
273
276
execute_process (COMMAND ${CMAKE_C_COMPILER} ${FLAGS_COMMON_ARCH} -print-file-name=libgcc.a
@@ -311,7 +314,9 @@ project (Jerry CXX C ASM)
311
314
312
315
function (declare_targets_for_build_mode BUILD_MODE )
313
316
set (TARGET_NAME ${BUILD_MODE_PREFIX_${BUILD_MODE}}.${PLATFORM_L} )
314
- set (LIBC_TARGET_NAME ${BUILD_MODE_PREFIX_${BUILD_MODE}}.jerry-libc.${PLATFORM_L}.lib )
317
+ if (${USE_JERRY_LIBC} )
318
+ set (LIBC_TARGET_NAME ${BUILD_MODE_PREFIX_${BUILD_MODE}}.jerry-libc.${PLATFORM_L}.lib )
319
+ endif ()
315
320
316
321
function (declare_target_with_modifiers ) # modifiers are passed in ARGN implicit argument
317
322
set (CORE_TARGET_NAME ${BUILD_MODE_PREFIX_${BUILD_MODE}} )
@@ -420,7 +425,9 @@ project (Jerry CXX C ASM)
420
425
set (TARGET_NAME unit-${TARGET_NAME} )
421
426
422
427
set (CORE_TARGET_NAME unittests.jerry-core )
423
- set (LIBC_TARGET_NAME unittests.jerry-libc.${PLATFORM_L}.lib )
428
+ if (${USE_JERRY_LIBC} )
429
+ set (LIBC_TARGET_NAME unittests.jerry-libc.${PLATFORM_L}.lib )
430
+ endif ()
424
431
set (FDLIBM_TARGET_NAME unittests.jerry-fdlibm${SUFFIX_THIRD_PARTY_LIB} )
425
432
426
433
add_executable (${TARGET_NAME} ${SOURCE_UNIT_TEST_MAIN} )
0 commit comments