From a30b89c536de5f689cf0012567a6ee9ff23255de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Lang=C3=B3?= Date: Thu, 27 Oct 2016 09:54:01 +0200 Subject: [PATCH] Improve Js2C converter (#1408) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Rename 'jerry_targetjs.h' to 'jerry-targetjs.h', because we use dashes in filen ames instead of underscores. * Made destination and js souce directory configurable. * Updated esp8266 target to the recent changes. * Updated mbed and mbedos5 target to the recent changes. JerryScript-DCO-1.0-Signed-off-by: László Langó llango.u-szeged@partner.samsung.com --- .gitignore | 2 +- targets/esp8266/Makefile | 2 +- targets/esp8266/Makefile.esp8266 | 2 +- targets/esp8266/user/user_main.c | 2 +- targets/mbed/readme.md | 2 +- targets/mbed/source/main.cpp | 2 +- targets/mbedos5/.gitignore | 2 +- targets/mbedos5/Makefile | 10 ++++---- .../source/launcher.cpp | 4 ++-- targets/tools/js2c.py | 24 +++++++++---------- 10 files changed, 25 insertions(+), 27 deletions(-) diff --git a/.gitignore b/.gitignore index 3acc32791..3edc8ce34 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,7 @@ tags ID # targets -jerry_targetjs.h +jerry-targetjs.h targets/mbedk64f/libjerry targets/mbedk64f/build targets/mbedk64f/yotta_modules diff --git a/targets/esp8266/Makefile b/targets/esp8266/Makefile index ab5013071..20d8ebc36 100644 --- a/targets/esp8266/Makefile +++ b/targets/esp8266/Makefile @@ -95,7 +95,7 @@ LINKFLAGS_eagle.app.v6 = \ DEPENDS_eagle.app.v6 = \ $(LD_FILE) \ $(LDDIR)/eagle.rom.addr.v6.ld \ - ./source/jerry_targetjs.h \ + ./source/jerry-targetjs.h \ ./libs/libjerrylibm.a \ ./libs/libjerrycore.a \ ./libs/libjerryentry.a diff --git a/targets/esp8266/Makefile.esp8266 b/targets/esp8266/Makefile.esp8266 index 2fb866b30..a7f2110bf 100644 --- a/targets/esp8266/Makefile.esp8266 +++ b/targets/esp8266/Makefile.esp8266 @@ -34,7 +34,7 @@ ESP_CFLAGS := -D__TARGET_ESP8266 -D__attr_always_inline___= MFORCE32 = `xtensa-lx106-elf-gcc --help=target | grep mforce-l32` ifneq ($(MFORCE32),) - # Your compiler supports the -mforce-l32 flag which means that + # Your compiler supports the -mforce-l32 flag which means that # constants can be placed in ROM to free additional RAM ESP_CFLAGS += -DJERRY_CONST_DATA="__attribute__((aligned(4))) __attribute__((section(\".irom.text\")))" endif diff --git a/targets/esp8266/user/user_main.c b/targets/esp8266/user/user_main.c index c53a43aa9..0a12500d0 100644 --- a/targets/esp8266/user/user_main.c +++ b/targets/esp8266/user/user_main.c @@ -43,7 +43,7 @@ void show_free_mem(int idx) { //----------------------------------------------------------------------------- -#include "jerry_targetjs.h" +#include "jerry-targetjs.h" static int jerry_task_init(void) { diff --git a/targets/mbed/readme.md b/targets/mbed/readme.md index 8e9969cbf..c3167f924 100644 --- a/targets/mbed/readme.md +++ b/targets/mbed/readme.md @@ -43,7 +43,7 @@ Basically, you can create a new target in this way (If the mbed OS support your You can run this rule with the following command: - `make -f targets/mbed/Makefile.mbed board=$(TARGET) jerry` -2. The next rule is the `js2c`. This rule calls a `js2c.py` python script from the `jerryscript/targets/tools` and creates the JavaScript builtin file into the `targets/mbed/source/` folder. This file is the `jerry_targetjs.h`. You can run this rule with the follwoing command: +2. The next rule is the `js2c`. This rule calls a `js2c.py` python script from the `jerryscript/targets/tools` and creates the JavaScript builtin file into the `targets/mbed/source/` folder. This file is the `jerry-targetjs.h`. You can run this rule with the follwoing command: - `make -f targets/mbed/Makefile.mbed board=$(TARGET) js2c` diff --git a/targets/mbed/source/main.cpp b/targets/mbed/source/main.cpp index 3675f8b51..de0e89911 100644 --- a/targets/mbed/source/main.cpp +++ b/targets/mbed/source/main.cpp @@ -19,7 +19,7 @@ #include "jerry-core/jerry-api.h" #include "jerry_run.h" -#include "jerry_targetjs.h" +#include "jerry-targetjs.h" static Serial pc (USBTX, USBRX); //tx, rx diff --git a/targets/mbedos5/.gitignore b/targets/mbedos5/.gitignore index a432fa5ba..795c32866 100644 --- a/targets/mbedos5/.gitignore +++ b/targets/mbedos5/.gitignore @@ -5,4 +5,4 @@ mbed-events mbed_settings.py js/pins.js source/pins.cpp -source/jerry_targetjs.h +source/jerry-targetjs.h diff --git a/targets/mbedos5/Makefile b/targets/mbedos5/Makefile index 0a0a105c1..4d5baff0d 100644 --- a/targets/mbedos5/Makefile +++ b/targets/mbedos5/Makefile @@ -52,13 +52,13 @@ MBED_CLI_FLAGS += -D "CONFIG_MEM_HEAP_AREA_SIZE=(1024*$(HEAPSIZE))" MBED_CLI_FLAGS += -t GCC_ARM .PHONY: all js2c getlibs rebuild library -all: source/jerry_targetjs.h source/pins.cpp .mbed ../../.mbedignore +all: source/jerry-targetjs.h source/pins.cpp .mbed ../../.mbedignore mbed target $(BOARD) mbed compile $(MBED_CLI_FLAGS) library: .mbed ../../.mbedignore # delete encoded js code if it exists - rm -f source/jerry_targetjs.h + rm -f source/jerry-targetjs.h mbed target $(BOARD) mbed compile $(MBED_CLI_FLAGS) --library @@ -68,13 +68,13 @@ clean: js2c: js/main.js js/flash_leds.js python ../tools/js2c.py --ignore pins.js -source/pins.cpp: +source/pins.cpp: python tools/generate_pins.py ${BOARD} ifeq ($(NO_JS),0) -source/jerry_targetjs.h: js2c +source/jerry-targetjs.h: js2c else -source/jerry_targetjs.h: ; +source/jerry-targetjs.h: ; endif getlibs: .mbed diff --git a/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-launcher/source/launcher.cpp b/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-launcher/source/launcher.cpp index 5ce31f7e3..b4b49e44a 100644 --- a/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-launcher/source/launcher.cpp +++ b/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-launcher/source/launcher.cpp @@ -25,14 +25,14 @@ #include "jerryscript-mbed-launcher/launcher.h" #include "jerryscript-mbed-launcher/setup.h" -#include "jerry_targetjs.h" +#include "jerry-targetjs.h" DECLARE_JS_CODES; /** * load_javascript * - * Parse and run javascript files specified in jerry_targetjs.h + * Parse and run javascript files specified in jerry-targetjs.h */ static int load_javascript() { for (int src = 0; js_codes[src].source; src++) { diff --git a/targets/tools/js2c.py b/targets/tools/js2c.py index 1926a5f86..eb4bfe4e7 100755 --- a/targets/tools/js2c.py +++ b/targets/tools/js2c.py @@ -14,14 +14,13 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# This file converts ./js/*.js to a C-array in ./source/jerry_targetjs.h file +# This file converts ./js/*.js to a C-array in ./source/jerry-targetjs.h file -import sys +import argparse import glob import os import re - -import argparse +import sys special_chars = re.compile(r'[-\\?\'".]') @@ -78,21 +77,20 @@ FOOTER = ''' ''' -OUT_PATH = './source/' -SRC_PATH = './js/' - parser = argparse.ArgumentParser(description="js2c") -parser.add_argument('build_type', help='build type', default='release', nargs='?') +parser.add_argument('--build-type', help='build type', default='release', choices=['release', 'debug']) parser.add_argument('--ignore', help='files to ignore', dest='ignore_files', default=[], action='append') -parser.add_argument('--no-main', help='don\'t require a main.js file', dest='main', action='store_false', default=True) +parser.add_argument('--no-main', help="don't require a 'main.js' file", dest='main', action='store_false', default=True) +parser.add_argument('--js-source', dest='js_source_path', default='./js', help='Source directory of JavaScript files" (default: %(default)s)') +parser.add_argument('--dest', dest='output_path', default='./source', help="Destination directory of 'jerry-targetjs.h' (default: %(default)s)") args = parser.parse_args() # argument processing -buildtype = args.build_type +build_type = args.build_type ignore_files = args.ignore_files -fout = open(OUT_PATH + 'jerry_targetjs.h', 'w') +fout = open(os.path.join(args.output_path, 'jerry-targetjs.h'), 'w') fout.write(LICENSE); fout.write(HEADER); @@ -104,7 +102,7 @@ def exportOneFile(path, name): code = fin.read() + '\0' # minimize code when release mode - if buildtype != 'debug': + if build_type != 'debug': code = removeComments(code) code = removeWhitespaces(code) @@ -122,7 +120,7 @@ def exportOneFile(path, name): def exportOneName(name): writeLine(fout, '{ ' + name + '_n, ' + name + '_s, ' + name + '_l }, \\', 1) -files = glob.glob(SRC_PATH + '*.js') +files = glob.glob(os.path.join(args.js_source_path, '*.js')) for path in files: name = extractName(path) if os.path.basename(path) not in ignore_files: