From 81702ff5eaf2c047ee00559be3205fae3eaa2c76 Mon Sep 17 00:00:00 2001 From: Akos Kiss Date: Mon, 16 Nov 2020 11:54:01 +0100 Subject: [PATCH] Drop the minimal variant of the default port implementation (#4331) The minimal variant became quite meaningless lately. There were two port APIs originally that had extra functions in the default port in addition to the core-mandated implementations: the I/O and Termination port APIs. However, the extra Termination API code was removed a year ago, leaving some minimal extension in the I/O port only. As the overhead of the extension is negligible, it is not worth maintaining two library variants. Therefore - this commit removes the minimal variant of the default port lib, - rewrites uses of the minimal variant to use the variant with the I/O extension, and - updates targets where I/O port code was copy-n-pasted. JerryScript-DCO-1.0-Signed-off-by: Akos Kiss akiss@inf.u-szeged.hu --- jerry-core/libjerry-core.pc.in | 2 +- jerry-main/CMakeLists.txt | 2 +- jerry-port/default/CMakeLists.txt | 25 +++++++---------- jerry-port/default/default-io.c | 23 +--------------- .../libjerry-port-default-minimal.pc.in | 11 -------- .../default/libjerry-port-default.pc.in | 1 - targets/esp-idf/io.c | 27 +++---------------- targets/riot-stm32f4/Makefile | 2 +- targets/riot-stm32f4/Makefile.riot | 4 +-- tests/unit-core/CMakeLists.txt | 2 +- tests/unit-doc/CMakeLists.txt | 4 +-- tests/unit-ext/CMakeLists.txt | 2 +- tests/unit-ext/module/CMakeLists.txt | 2 +- 13 files changed, 23 insertions(+), 84 deletions(-) delete mode 100644 jerry-port/default/libjerry-port-default-minimal.pc.in diff --git a/jerry-core/libjerry-core.pc.in b/jerry-core/libjerry-core.pc.in index 977172397..260812cc5 100644 --- a/jerry-core/libjerry-core.pc.in +++ b/jerry-core/libjerry-core.pc.in @@ -6,7 +6,7 @@ Name: libjerry-core Description: JerryScript: lightweight JavaScript engine (core engine library) URL: https://github.com/jerryscript-project/jerryscript Version: 1.0 -Requires.private: @JERRY_CORE_PKGCONFIG_REQUIRES@ # NOTE: libjerry-port-default* is not added as a required package +Requires.private: @JERRY_CORE_PKGCONFIG_REQUIRES@ # NOTE: libjerry-port-default is not added as a required package Libs: -L${libdir} -ljerry-core Libs.private: @JERRY_CORE_PKGCONFIG_LIBS@ Cflags: -I${includedir} @JERRY_CORE_PKGCONFIG_CFLAGS@ diff --git a/jerry-main/CMakeLists.txt b/jerry-main/CMakeLists.txt index 4ac58bc37..f722485ea 100644 --- a/jerry-main/CMakeLists.txt +++ b/jerry-main/CMakeLists.txt @@ -70,7 +70,7 @@ endif() if(JERRY_CMDLINE_TEST) jerry_create_executable("jerry-test" "main-unix-test.c" "benchmarking.c") - target_link_libraries("jerry-test" jerry-port-default-minimal) + target_link_libraries("jerry-test" jerry-port-default) if (JERRY_TEST_STACK_MEASURE) target_compile_definitions("jerry-test" PRIVATE -DJERRY_TEST_STACK_MEASURE=1) endif() diff --git a/jerry-port/default/CMakeLists.txt b/jerry-port/default/CMakeLists.txt index dfc9f95bd..68c766205 100644 --- a/jerry-port/default/CMakeLists.txt +++ b/jerry-port/default/CMakeLists.txt @@ -73,24 +73,17 @@ elseif(HAVE_UNISTD_H) set(DEFINES_PORT_DEFAULT ${DEFINES_PORT_DEFAULT} HAVE_UNISTD_H) endif() -# Default Jerry port implementation library variants: -# - default -# - default-minimal (no extra termination and log APIs) -foreach(JERRY_PORT_LIBRARY_NAME ${JERRY_PORT_DEFAULT_NAME} ${JERRY_PORT_DEFAULT_NAME}-minimal) - add_library(${JERRY_PORT_LIBRARY_NAME} ${SOURCE_PORT_DEFAULT}) - target_include_directories(${JERRY_PORT_LIBRARY_NAME} PUBLIC ${INCLUDE_PORT_DEFAULT}) - target_include_directories(${JERRY_PORT_LIBRARY_NAME} PRIVATE ${INCLUDE_CORE_PUBLIC}) - target_include_directories(${JERRY_PORT_LIBRARY_NAME} PRIVATE ${INCLUDE_EXT_PUBLIC}) - target_compile_definitions(${JERRY_PORT_LIBRARY_NAME} PRIVATE ${DEFINES_PORT_DEFAULT}) - target_link_libraries(${JERRY_PORT_LIBRARY_NAME} jerry-core) # FIXME: remove this dependency as soon as possible -endforeach() - -target_compile_definitions(${JERRY_PORT_DEFAULT_NAME}-minimal PRIVATE DISABLE_EXTRA_API) +# Default Jerry port implementation library +add_library(${JERRY_PORT_DEFAULT_NAME} ${SOURCE_PORT_DEFAULT}) +target_include_directories(${JERRY_PORT_DEFAULT_NAME} PUBLIC ${INCLUDE_PORT_DEFAULT}) +target_include_directories(${JERRY_PORT_DEFAULT_NAME} PRIVATE ${INCLUDE_CORE_PUBLIC}) +target_include_directories(${JERRY_PORT_DEFAULT_NAME} PRIVATE ${INCLUDE_EXT_PUBLIC}) +target_compile_definitions(${JERRY_PORT_DEFAULT_NAME} PRIVATE ${DEFINES_PORT_DEFAULT}) +target_link_libraries(${JERRY_PORT_DEFAULT_NAME} jerry-core) # FIXME: remove this dependency as soon as possible # Installation configure_file(libjerry-port-default.pc.in libjerry-port-default.pc @ONLY) -configure_file(libjerry-port-default-minimal.pc.in libjerry-port-default-minimal.pc @ONLY) -install(TARGETS ${JERRY_PORT_DEFAULT_NAME} ${JERRY_PORT_DEFAULT_NAME}-minimal DESTINATION lib) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libjerry-port-default.pc ${CMAKE_CURRENT_BINARY_DIR}/libjerry-port-default-minimal.pc DESTINATION lib/pkgconfig) +install(TARGETS ${JERRY_PORT_DEFAULT_NAME} DESTINATION lib) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libjerry-port-default.pc DESTINATION lib/pkgconfig) install(DIRECTORY ${INCLUDE_PORT_DEFAULT}/ DESTINATION include) diff --git a/jerry-port/default/default-io.c b/jerry-port/default/default-io.c index 0d170cd2a..44dbabbb8 100644 --- a/jerry-port/default/default-io.c +++ b/jerry-port/default/default-io.c @@ -21,23 +21,15 @@ #include "jerryscript-port-default.h" #include "jerryscript-debugger.h" -#ifndef DISABLE_EXTRA_API - /** * Actual log level */ static jerry_log_level_t jerry_port_default_log_level = JERRY_LOG_LEVEL_ERROR; -#define JERRY_PORT_DEFAULT_LOG_LEVEL jerry_port_default_log_level - /** * Get the log level * * @return current log level - * - * Note: - * This function is only available if the port implementation library is - * compiled without the DISABLE_EXTRA_API macro. */ jerry_log_level_t jerry_port_default_get_log_level (void) @@ -47,10 +39,6 @@ jerry_port_default_get_log_level (void) /** * Set the log level - * - * Note: - * This function is only available if the port implementation library is - * compiled without the DISABLE_EXTRA_API macro. */ void jerry_port_default_set_log_level (jerry_log_level_t level) /**< log level */ @@ -58,10 +46,6 @@ jerry_port_default_set_log_level (jerry_log_level_t level) /**< log level */ jerry_port_default_log_level = level; } /* jerry_port_default_set_log_level */ -#else /* DISABLE_EXTRA_API */ -#define JERRY_PORT_DEFAULT_LOG_LEVEL JERRY_LOG_LEVEL_ERROR -#endif /* !DISABLE_EXTRA_API */ - /** * Default implementation of jerry_port_log. Prints log message to the standard * error with 'vfprintf' if message log level is less than or equal to the @@ -69,18 +53,13 @@ jerry_port_default_set_log_level (jerry_log_level_t level) /**< log level */ * * If debugger support is enabled, printing happens first to an in-memory buffer, * which is then sent both to the standard error and to the debugger client. - * - * Note: - * Changing the log level from JERRY_LOG_LEVEL_ERROR is only possible if - * the port implementation library is compiled without the - * DISABLE_EXTRA_API macro. */ void jerry_port_log (jerry_log_level_t level, /**< message log level */ const char *format, /**< format string */ ...) /**< parameters */ { - if (level <= JERRY_PORT_DEFAULT_LOG_LEVEL) + if (level <= jerry_port_default_log_level) { va_list args; va_start (args, format); diff --git a/jerry-port/default/libjerry-port-default-minimal.pc.in b/jerry-port/default/libjerry-port-default-minimal.pc.in deleted file mode 100644 index 001eaafe6..000000000 --- a/jerry-port/default/libjerry-port-default-minimal.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@CMAKE_INSTALL_PREFIX@ -libdir=${prefix}/lib -includedir=${prefix}/include - -Name: libjerry-port-default-minimal -Description: JerryScript: lightweight JavaScript engine (default minimal port library) -URL: https://github.com/jerryscript-project/jerryscript -Version: 1.0 -Conflicts: libjerry-port-default -Libs: -L${libdir} -ljerry-port-default-minimal -Cflags: -I${includedir} diff --git a/jerry-port/default/libjerry-port-default.pc.in b/jerry-port/default/libjerry-port-default.pc.in index 1f7181cc4..8326d35ba 100644 --- a/jerry-port/default/libjerry-port-default.pc.in +++ b/jerry-port/default/libjerry-port-default.pc.in @@ -6,6 +6,5 @@ Name: libjerry-port-default Description: JerryScript: lightweight JavaScript engine (default port library) URL: https://github.com/jerryscript-project/jerryscript Version: 1.0 -Conflicts: libjerry-port-default-minimal Libs: -L${libdir} -ljerry-port-default Cflags: -I${includedir} diff --git a/targets/esp-idf/io.c b/targets/esp-idf/io.c index fab28abe9..8dff90b25 100644 --- a/targets/esp-idf/io.c +++ b/targets/esp-idf/io.c @@ -25,34 +25,26 @@ static const char TAG[] = "JS"; static esp_log_level_t crosslog(jerry_log_level_t level) { - switch(level) + switch(level) { case JERRY_LOG_LEVEL_ERROR: return ESP_LOG_ERROR; case JERRY_LOG_LEVEL_WARNING: return ESP_LOG_WARN; case JERRY_LOG_LEVEL_DEBUG: return ESP_LOG_DEBUG; case JERRY_LOG_LEVEL_TRACE: return ESP_LOG_VERBOSE; } - + return ESP_LOG_NONE; } -#ifndef DISABLE_EXTRA_API - /** * Actual log level */ static jerry_log_level_t jerry_port_default_log_level = JERRY_LOG_LEVEL_ERROR; -#define JERRY_PORT_DEFAULT_LOG_LEVEL jerry_port_default_log_level - /** * Get the log level * * @return current log level - * - * Note: - * This function is only available if the port implementation library is - * compiled without the DISABLE_EXTRA_API macro. */ jerry_log_level_t jerry_port_default_get_log_level (void) @@ -62,10 +54,6 @@ jerry_port_default_get_log_level (void) /** * Set the log level - * - * Note: - * This function is only available if the port implementation library is - * compiled without the DISABLE_EXTRA_API macro. */ void jerry_port_default_set_log_level (jerry_log_level_t level) /**< log level */ @@ -73,10 +61,6 @@ jerry_port_default_set_log_level (jerry_log_level_t level) /**< log level */ jerry_port_default_log_level = level; } /* jerry_port_default_set_log_level */ -#else /* DISABLE_EXTRA_API */ -#define JERRY_PORT_DEFAULT_LOG_LEVEL JERRY_LOG_LEVEL_ERROR -#endif /* !DISABLE_EXTRA_API */ - /** * Default implementation of jerry_port_log. Prints log message to the standard * error with 'vfprintf' if message log level is less than or equal to the @@ -84,18 +68,13 @@ jerry_port_default_set_log_level (jerry_log_level_t level) /**< log level */ * * If debugger support is enabled, printing happens first to an in-memory buffer, * which is then sent both to the standard error and to the debugger client. - * - * Note: - * Changing the log level from JERRY_LOG_LEVEL_ERROR is only possible if - * the port implementation library is compiled without the - * DISABLE_EXTRA_API macro. */ void jerry_port_log (jerry_log_level_t level, /**< message log level */ const char *format, /**< format string */ ...) /**< parameters */ { - if (level <= JERRY_PORT_DEFAULT_LOG_LEVEL) + if (level <= jerry_port_default_log_level) { va_list args; va_start (args, format); diff --git a/targets/riot-stm32f4/Makefile b/targets/riot-stm32f4/Makefile index 2cd9631ec..5e49ae116 100644 --- a/targets/riot-stm32f4/Makefile +++ b/targets/riot-stm32f4/Makefile @@ -42,7 +42,7 @@ USEMODULE += shell USEMODULE += shell_commands # Add the jerry libs -USEMODULE += libjerry-core libjerry-port-default-minimal libjerry-ext +USEMODULE += libjerry-core libjerry-port-default libjerry-ext include $(RIOTBASE)/Makefile.include diff --git a/targets/riot-stm32f4/Makefile.riot b/targets/riot-stm32f4/Makefile.riot index b30ffc531..1f03ff3f9 100644 --- a/targets/riot-stm32f4/Makefile.riot +++ b/targets/riot-stm32f4/Makefile.riot @@ -52,11 +52,11 @@ libjerry: -DJERRY_PROFILE="es5.1" \ -DEXTERNAL_COMPILE_FLAGS="$(EXT_CFLAGS)" \ -DJERRY_GLOBAL_HEAP_SIZE=$(JERRYHEAP) - make -C$(BUILD_DIR) jerry-core jerry-port-default-minimal jerry-ext + make -C$(BUILD_DIR) jerry-core jerry-port-default jerry-ext mkdir -p $(COPYTARGET) cp $(BUILD_DIR)/lib/libjerry-core.a $(COPYTARGET) - cp $(BUILD_DIR)/lib/libjerry-port-default-minimal.a $(COPYTARGET) + cp $(BUILD_DIR)/lib/libjerry-port-default.a $(COPYTARGET) cp $(BUILD_DIR)/lib/libjerry-ext.a $(COPYTARGET) riot-jerry: libjerry diff --git a/tests/unit-core/CMakeLists.txt b/tests/unit-core/CMakeLists.txt index 5652b3633..cc71e212d 100644 --- a/tests/unit-core/CMakeLists.txt +++ b/tests/unit-core/CMakeLists.txt @@ -42,7 +42,7 @@ foreach(SOURCE_UNIT_TEST_MAIN ${SOURCE_UNIT_TEST_MAIN_MODULES}) target_include_directories(${TARGET_NAME} PRIVATE ${INCLUDE_CORE_PRIVATE}) set_property(TARGET ${TARGET_NAME} PROPERTY LINK_FLAGS "${LINKER_FLAGS_COMMON}") set_property(TARGET ${TARGET_NAME} PROPERTY RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests") - target_link_libraries(${TARGET_NAME} jerry-core jerry-port-default-minimal) + target_link_libraries(${TARGET_NAME} jerry-core jerry-port-default) add_dependencies(unittests-core ${TARGET_NAME}) endforeach() diff --git a/tests/unit-doc/CMakeLists.txt b/tests/unit-doc/CMakeLists.txt index 3123c9f4a..5b8aa49ae 100644 --- a/tests/unit-doc/CMakeLists.txt +++ b/tests/unit-doc/CMakeLists.txt @@ -82,7 +82,7 @@ add_custom_target(all-doc-files DEPENDS ${DOCTEST_COMPILE} ${DOCTEST_LINK} ${DOC if(NOT ("${DOCTEST_COMPILE}" STREQUAL "")) add_library(compile-doc-tests ${DOCTEST_COMPILE}) add_dependencies(compile-doc-tests all-doc-files) - target_link_libraries(compile-doc-tests jerry-ext jerry-core jerry-port-default-minimal) + target_link_libraries(compile-doc-tests jerry-ext jerry-core jerry-port-default) set_property(TARGET compile-doc-tests APPEND_STRING PROPERTY COMPILE_FLAGS "${COMPILE_FLAGS_DOCTEST}") endif() @@ -97,7 +97,7 @@ macro(doctest_add_executables NAME_PREFIX) set_property(TARGET ${TARGET_NAME} APPEND_STRING PROPERTY COMPILE_FLAGS "${COMPILE_FLAGS_DOCTEST}") set_property(TARGET ${TARGET_NAME} PROPERTY LINK_FLAGS "${LINKER_FLAGS_COMMON}") set_property(TARGET ${TARGET_NAME} PROPERTY RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests") - target_link_libraries(${TARGET_NAME} jerry-ext jerry-core jerry-port-default-minimal) + target_link_libraries(${TARGET_NAME} jerry-ext jerry-core jerry-port-default) endforeach() endmacro() diff --git a/tests/unit-ext/CMakeLists.txt b/tests/unit-ext/CMakeLists.txt index da412d9eb..9bfd41f91 100644 --- a/tests/unit-ext/CMakeLists.txt +++ b/tests/unit-ext/CMakeLists.txt @@ -36,7 +36,7 @@ foreach(SOURCE_UNIT_TEST_EXT ${SOURCE_UNIT_TEST_EXT_MODULES}) set_property(TARGET ${TARGET_NAME} PROPERTY LINK_FLAGS "${LINKER_FLAGS_COMMON}") set_property(TARGET ${TARGET_NAME} PROPERTY RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests") - target_link_libraries(${TARGET_NAME} jerry-ext jerry-core jerry-port-default-minimal) + target_link_libraries(${TARGET_NAME} jerry-ext jerry-core jerry-port-default) add_dependencies(unittests-ext ${TARGET_NAME}) endforeach() diff --git a/tests/unit-ext/module/CMakeLists.txt b/tests/unit-ext/module/CMakeLists.txt index 038df68f2..eed0c998b 100644 --- a/tests/unit-ext/module/CMakeLists.txt +++ b/tests/unit-ext/module/CMakeLists.txt @@ -25,5 +25,5 @@ endif() add_executable(${JERRYX_MODULE_UNITTEST_NAME} ${JERRYX_MODULE_UNIT_TEST_SOURCES}) set_property(TARGET ${JERRYX_MODULE_UNITTEST_NAME} PROPERTY LINK_FLAGS "${LINKER_FLAGS_COMMON}") set_property(TARGET ${JERRYX_MODULE_UNITTEST_NAME} PROPERTY RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests") -target_link_libraries(${JERRYX_MODULE_UNITTEST_NAME} jerry-ext jerry-core jerry-port-default-minimal) +target_link_libraries(${JERRYX_MODULE_UNITTEST_NAME} jerry-ext jerry-core jerry-port-default) target_include_directories(${JERRYX_MODULE_UNITTEST_NAME} PRIVATE ${INCLUDE_UNIT_EXT})