Merge esp8266-rtos-sdk and esp-idf targets (#4958)
This patch bumps esp8266-rtos-sdk to the latest release. This required to modify the directory structure and the build system to conform to ESP-IDF Style. Since esp-idf target already supports ESP-IDF Style, the espressif targets has been merged to eliminate code duplication. The target application code has been modified from blinking leds to hello world to be aligned to other targets. JerryScript-DCO-1.0-Signed-off-by: Roland Takacs roland.takacs@h-lab.eu
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# Copyright JS Foundation and other contributors, http://js.foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
# Set JerryScript variables
|
||||
set(JERRY_ROOT_DIR ${PROJECT_DIR}/../../..)
|
||||
set(JERRY_BUILD_DIR ${JERRY_ROOT_DIR}/build/jerry)
|
||||
set(JERRY_INCLUDE_DIRS "${JERRY_ROOT_DIR}/jerry-ext/include" "${JERRY_ROOT_DIR}/jerry-core/include")
|
||||
set(JERRY_HEAP_SIZE 20)
|
||||
|
||||
# Make compile flags separated by spaces
|
||||
string(REPLACE ";" " " COMPILE_FLAGS "${COMPILE_OPTIONS};${C_COMPILE_OPTIONS}")
|
||||
|
||||
# Build JerryScript
|
||||
execute_process(COMMAND ${JERRY_ROOT_DIR}/tools/build.py
|
||||
--clean
|
||||
--builddir=${JERRY_BUILD_DIR}
|
||||
--lto=OFF
|
||||
--jerry-cmdline=OFF
|
||||
--jerry-math=OFF
|
||||
--amalgam=ON
|
||||
--mem-heap=${JERRY_HEAP_SIZE}
|
||||
--profile=es.next
|
||||
--compile-flag=${COMPILE_FLAGS}
|
||||
--toolchain=${CMAKE_TOOLCHAIN_FILE})
|
||||
|
||||
# Register JerryScript target application
|
||||
idf_component_register(SRCS "jerry-main.c" "jerry-port.c" INCLUDE_DIRS ${JERRY_INCLUDE_DIRS})
|
||||
|
||||
add_library(jerry-core STATIC IMPORTED)
|
||||
add_library(jerry-ext STATIC IMPORTED)
|
||||
add_library(jerry-port STATIC IMPORTED)
|
||||
|
||||
set_target_properties(jerry-core PROPERTIES IMPORTED_LOCATION "${JERRY_BUILD_DIR}/lib/libjerry-core.a")
|
||||
set_target_properties(jerry-ext PROPERTIES IMPORTED_LOCATION "${JERRY_BUILD_DIR}/lib/libjerry-ext.a")
|
||||
set_target_properties(jerry-port PROPERTIES IMPORTED_LOCATION "${JERRY_BUILD_DIR}/lib/libjerry-port.a")
|
||||
|
||||
# jerry-core has espressif/main/jerry-port.c as dependency
|
||||
target_link_libraries(jerry-core INTERFACE ${COMPONENT_LIB})
|
||||
# jerry-main has jerry-core, jerry-ext, jerry-port as dependencies
|
||||
target_link_libraries(${COMPONENT_LIB} INTERFACE jerry-core jerry-ext jerry-port)
|
||||
@@ -0,0 +1,54 @@
|
||||
/* Copyright JS Foundation and other contributors, http://js.foundation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "jerryscript.h"
|
||||
#include "jerryscript-ext/handlers.h"
|
||||
#include "jerryscript-ext/properties.h"
|
||||
|
||||
/**
|
||||
* Jerryscript simple test
|
||||
*/
|
||||
void app_main()
|
||||
{
|
||||
jerry_value_t ret_value = jerry_undefined ();
|
||||
const jerry_char_t script[] = "print ('Hello, World!');";
|
||||
|
||||
/* Initialize engine */
|
||||
jerry_init (JERRY_INIT_EMPTY);
|
||||
jerry_log_set_level (JERRY_LOG_LEVEL_DEBUG);
|
||||
jerry_log (JERRY_LOG_LEVEL_DEBUG, "This test run the following script code: %s", script);
|
||||
|
||||
/* Register the print function in the global object */
|
||||
jerryx_register_global ("print", jerryx_handler_print);
|
||||
|
||||
/* Setup Global scope code */
|
||||
ret_value = jerry_parse (script, sizeof (script) - 1, NULL);
|
||||
|
||||
if (!jerry_value_is_exception (ret_value))
|
||||
{
|
||||
/* Execute the parsed source code in the Global scope */
|
||||
ret_value = jerry_run (ret_value);
|
||||
}
|
||||
|
||||
if (jerry_value_is_exception (ret_value))
|
||||
{
|
||||
jerry_log (JERRY_LOG_LEVEL_DEBUG, "Script error...\n\n");
|
||||
}
|
||||
|
||||
jerry_value_free (ret_value);
|
||||
|
||||
/* Cleanup engine */
|
||||
jerry_cleanup ();
|
||||
} /* test_jerry */
|
||||
@@ -0,0 +1,91 @@
|
||||
/* Copyright JS Foundation and other contributors, http://js.foundation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "jerryscript-port.h"
|
||||
#include "jerryscript.h"
|
||||
|
||||
#include "esp_log.h"
|
||||
#include "esp_system.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
|
||||
static const char ESP_JS_TAG[] = "JS";
|
||||
|
||||
/**
|
||||
* Provide log message implementation for the engine.
|
||||
*/
|
||||
void
|
||||
jerry_port_log (const char *message_p) /**< message */
|
||||
{
|
||||
ESP_LOGI (ESP_JS_TAG, "%s", message_p);
|
||||
} /* jerry_port_log */
|
||||
|
||||
/**
|
||||
* Implementation of jerry_port_fatal.
|
||||
* Calls 'abort' if exit code is non-zero, 'exit' otherwise.
|
||||
*/
|
||||
void
|
||||
jerry_port_fatal (jerry_fatal_code_t code) /**< cause of error */
|
||||
{
|
||||
ESP_LOGE (ESP_JS_TAG, "Fatal error: %d", code);
|
||||
vTaskSuspend (NULL);
|
||||
abort ();
|
||||
} /* jerry_port_fatal */
|
||||
|
||||
/**
|
||||
* Default implementation of jerry_port_local_tza. Uses the 'tm_gmtoff' field
|
||||
* of 'struct tm' (a GNU extension) filled by 'localtime_r' if available on the
|
||||
* system, does nothing otherwise.
|
||||
*
|
||||
* @return offset between UTC and local time at the given unix timestamp, if
|
||||
* available. Otherwise, returns 0, assuming UTC time.
|
||||
*/
|
||||
int32_t
|
||||
jerry_port_local_tza (double unix_ms)
|
||||
{
|
||||
struct tm tm;
|
||||
char buf[8];
|
||||
time_t now = (time_t) unix_ms / 1000;
|
||||
|
||||
localtime_r (&now, &tm);
|
||||
strftime (buf, 8, "%z", &tm);
|
||||
return -atoi (buf) * 3600 * 1000 / 100;
|
||||
} /* jerry_port_local_tza */
|
||||
|
||||
/**
|
||||
* Implementation of jerry_port_get_current_time.
|
||||
* Uses 'gettimeofday' if available on the system, does nothing otherwise.
|
||||
*
|
||||
* @return milliseconds since Unix epoch if 'gettimeofday' is available
|
||||
* 0 - otherwise.
|
||||
*/
|
||||
double
|
||||
jerry_port_current_time (void)
|
||||
{
|
||||
struct timeval tv;
|
||||
|
||||
if (gettimeofday (&tv, NULL) == 0)
|
||||
{
|
||||
return ((double) tv.tv_sec) * 1000.0 + ((double) tv.tv_usec) / 1000.0;
|
||||
}
|
||||
return 0.0;
|
||||
} /* jerry_port_current_time */
|
||||
Reference in New Issue
Block a user