Extension description syntax; extension instantiation, field values and calls with arguments (except strings); example of a simple extension.
String arguments support is supposed to be added in a subsequent commit.
This commit is contained in:
+31
-16
@@ -36,6 +36,7 @@ project (Jerry_Plugins CXX ASM)
|
||||
|
||||
# Include directories
|
||||
set(INCLUDE_PLUGINS
|
||||
io
|
||||
lib-device-stm)
|
||||
|
||||
# Third-party
|
||||
@@ -58,7 +59,9 @@ project (Jerry_Plugins CXX ASM)
|
||||
${CMAKE_SOURCE_DIR}/third-party/STM32F4-Discovery_FW_V1.1.0)
|
||||
|
||||
# Sources
|
||||
file(GLOB SOURCE_PLUGINS lib-device-stm/*.cpp)
|
||||
file(GLOB SOURCE_PLUGINS
|
||||
lib-device-stm/*.cpp
|
||||
io/*.cpp)
|
||||
|
||||
# Third-party
|
||||
# Platform-specific
|
||||
@@ -80,7 +83,7 @@ project (Jerry_Plugins CXX ASM)
|
||||
set(DEFINES_PLUGINS ${DEFINES_PLUGINS_${PLATFORM_EXT}})
|
||||
set(INCLUDE_PLUGINS ${INCLUDE_PLUGINS} ${INCLUDE_THIRD_PARTY_${PLATFORM_EXT}})
|
||||
|
||||
# Targets declaration
|
||||
# Targets declaration
|
||||
string(TOLOWER ${PLATFORM_EXT} PLATFORM_L)
|
||||
set(TARGET_NAME plugins.${PLATFORM_L})
|
||||
|
||||
@@ -88,22 +91,34 @@ project (Jerry_Plugins CXX ASM)
|
||||
set(TARGET_NAME ${BUILD_MODE_PREFIX_${BUILD_MODE}}.${TARGET_NAME})
|
||||
set(DEFINES_PLUGINS ${DEFINES_PLUGINS} ${DEFINES_PLUGINS_${BUILD_MODE}})
|
||||
|
||||
# Jerry
|
||||
add_library(${TARGET_NAME}.lib STATIC ${SOURCE_PLUGINS})
|
||||
set_property(TARGET ${TARGET_NAME}.lib
|
||||
PROPERTY COMPILE_FLAGS "${COMPILE_FLAGS_PLUGINS} ${FLAGS_COMMON_${BUILD_MODE}}")
|
||||
target_compile_definitions(${TARGET_NAME}.lib PRIVATE ${DEFINES_PLUGINS})
|
||||
target_include_directories(${TARGET_NAME}.lib PRIVATE ${INCLUDE_PLUGINS})
|
||||
function(declare_target_with_modifiers ) # modifiers are passed in ARGN implicit argument
|
||||
foreach(MODIFIER ${ARGN})
|
||||
set(TARGET_NAME ${TARGET_NAME}${MODIFIER_SUFFIX_${MODIFIER}})
|
||||
endforeach()
|
||||
|
||||
# Third-party MCU library
|
||||
if(DEFINED SOURCE_THIRD_PARTY_${PLATFORM_EXT})
|
||||
add_library(${TARGET_NAME}${SUFFIX_THIRD_PARTY_LIB} STATIC ${SOURCE_THIRD_PARTY_${PLATFORM_EXT}})
|
||||
set_property(TARGET ${TARGET_NAME}${SUFFIX_THIRD_PARTY_LIB}
|
||||
PROPERTY COMPILE_FLAGS "${FLAGS_COMMON_${BUILD_MODE}}")
|
||||
target_include_directories(${TARGET_NAME}${SUFFIX_THIRD_PARTY_LIB} PRIVATE ${INCLUDE_PLUGINS})
|
||||
# Jerry
|
||||
add_library(${TARGET_NAME}.lib STATIC ${SOURCE_PLUGINS})
|
||||
set_property(TARGET ${TARGET_NAME}.lib
|
||||
PROPERTY COMPILE_FLAGS "${COMPILE_FLAGS_PLUGINS} ${FLAGS_COMMON_${BUILD_MODE}}")
|
||||
target_compile_definitions(${TARGET_NAME}.lib PRIVATE ${DEFINES_PLUGINS})
|
||||
target_include_directories(${TARGET_NAME}.lib PRIVATE ${INCLUDE_PLUGINS} ${INCLUDE_CORE_INTERFACE})
|
||||
|
||||
target_link_libraries(${TARGET_NAME}.lib ${TARGET_NAME}${SUFFIX_THIRD_PARTY_LIB})
|
||||
endif()
|
||||
# Third-party MCU library
|
||||
if(DEFINED SOURCE_THIRD_PARTY_${PLATFORM_EXT})
|
||||
add_library(${TARGET_NAME}${SUFFIX_THIRD_PARTY_LIB} STATIC ${SOURCE_THIRD_PARTY_${PLATFORM_EXT}})
|
||||
set_property(TARGET ${TARGET_NAME}${SUFFIX_THIRD_PARTY_LIB}
|
||||
PROPERTY COMPILE_FLAGS "${FLAGS_COMMON_${BUILD_MODE}}")
|
||||
target_include_directories(${TARGET_NAME}${SUFFIX_THIRD_PARTY_LIB} PRIVATE ${INCLUDE_PLUGINS})
|
||||
|
||||
target_link_libraries(${TARGET_NAME}.lib ${TARGET_NAME}${SUFFIX_THIRD_PARTY_LIB})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
foreach(MODIFIERS_LIST ${MODIFIERS_LISTS})
|
||||
separate_arguments(MODIFIERS_LIST)
|
||||
|
||||
declare_target_with_modifiers(${MODIFIERS_LIST})
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
declare_targets_for_build_mode(DEBUG)
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
/* Copyright 2015 Samsung Electronics Co., Ltd.
|
||||
*
|
||||
* 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 <stdio.h>
|
||||
|
||||
#include "init.h"
|
||||
#include "jerry.h"
|
||||
|
||||
static void plugin_io_print_uint32 (uint32_t);
|
||||
|
||||
#include "io-extension-description.inc.h"
|
||||
|
||||
void
|
||||
plugin_io_init (void)
|
||||
{
|
||||
jerry_extend_with (&jerry_extension);
|
||||
} /* plugin_io_init */
|
||||
|
||||
/**
|
||||
* Print an uint32 number without new-line to standard output
|
||||
*/
|
||||
static void
|
||||
plugin_io_print_uint32 (uint32_t num) /**< uint32 to print */
|
||||
{
|
||||
printf ("%lu", num);
|
||||
} /* print_uint32 */
|
||||
@@ -0,0 +1,21 @@
|
||||
/* Copyright 2015 Samsung Electronics Co., Ltd.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef INIT_H
|
||||
#define INIT_H
|
||||
|
||||
extern void plugin_io_init (void);
|
||||
|
||||
#endif /* INIT_H */
|
||||
@@ -0,0 +1,38 @@
|
||||
/* Copyright 2015 Samsung Electronics Co., Ltd.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef IO_EXTENSION_DESCRIPTION_INC_H
|
||||
#define IO_EXTENSION_DESCRIPTION_INC_H
|
||||
|
||||
#define EXTENSION_NAME "io"
|
||||
#define EXTENSION_DESCRIPTION_HEADER "io-extension-description.inc.h"
|
||||
|
||||
#include "jerry-extension.inc.h"
|
||||
|
||||
#endif /* IO_EXTENSION_DESCRIPTION_INC_H */
|
||||
|
||||
#if defined (EXTENSION_FUNCTION)
|
||||
EXTENSION_FUNCTION (print_uint32, plugin_io_print_uint32,
|
||||
1,
|
||||
EXTENSION_ARG (0, UINT32))
|
||||
#elif defined (EXTENSION_FIELD)
|
||||
#if defined (__TARGET_HOST)
|
||||
EXTENSION_FIELD (platform, STRING, "linux")
|
||||
#elif defined (__TARGET_MCU_STM32F3)
|
||||
EXTENSION_FIELD (platform, STRING, "mcu_stm32f3")
|
||||
#elif defined (__TARGET_MCU_STM32F3)
|
||||
EXTENSION_FIELD (platform, STRING, "mcu_stm32f4")
|
||||
#endif /* !__TARGET_MCU_STM32F3 && __TARGET_MCU_STM32F4 */
|
||||
#endif /* !EXTENSION_FUNCTION && !EXTENSION_FIELD */
|
||||
Reference in New Issue
Block a user