def build_jerry(option): # Check if JerryScript submodule exists. if not fs.exists(path.JERRY_ROOT): ex.fail('JerryScript submodule not exists!') # Move working directory to JerryScript build directory. build_home = fs.join(host_build_root, 'deps', 'jerry') fs.maybe_make_directory(build_home) fs.chdir(build_home) # Set JerryScript cmake option. cmake_opt = [path.JERRY_ROOT] cmake_opt.append('-DCMAKE_TOOLCHAIN_FILE=' + host_cmake_toolchain_file) if option.buildtype == 'debug': cmake_opt.append('-DCMAKE_BUILD_TYPE=Debug') # Turn off LTO for jerry bin to save build time. cmake_opt.append('-DENABLE_LTO=OFF') # Turn on snapshot if not option.no_snapshot: cmake_opt.append('-DFEATURE_SNAPSHOT_SAVE=ON') # Run cmake. ex.check_run_cmd('cmake', cmake_opt) target_jerry = { 'target_name': 'jerry', 'output_path': fs.join(build_home, 'bin/jerry') } # Make option. make_opt = ['-C', build_home] if not option.no_parallel_build: make_opt.append('-j') # Run make for a target. ex.check_run_cmd('make', make_opt) # Check output output = target_jerry['output_path'] if not fs.exists(output): print output ex.fail('JerryScript build failed - target not produced.') # copy fs.copy(output, jerry_output_path) return True
def build_tuv(option): # Check if libtuv submodule exists. if not fs.exists(path.TUV_ROOT): ex.fail('libtuv submodule not exists!') # Move working directory to libtuv build directory. build_home = fs.join(build_root, 'deps', 'libtuv') fs.maybe_make_directory(build_home) fs.chdir(build_home) # Set tuv cmake option. cmake_opt = [path.TUV_ROOT] cmake_opt.append('-DCMAKE_TOOLCHAIN_FILE=' + fs.join(path.TUV_ROOT, 'cmake', 'config', 'config_' + target_tuple + '.cmake')) cmake_opt.append('-DCMAKE_BUILD_TYPE=' + option.buildtype) cmake_opt.append('-DTARGET_PLATFORM=' + target_tuple) cmake_opt.append('-DLIBTUV_CUSTOM_LIB_OUT=' + build_home) cmake_opt.append('-DBUILDTESTER=no') cmake_opt.append('-DBUILDAPIEMULTESTER=no') if option.target_os == 'nuttx': cmake_opt.append('-DTARGET_SYSTEMROOT=' + option.nuttx_home) if option.target_board: cmake_opt.append('-DTARGET_BOARD=' + option.target_board) # inflate cmake option. inflate_cmake_option(cmake_opt, option) # Run cmake ex.check_run_cmd('cmake', cmake_opt) # Run make make_opt = [] if not option.no_parallel_build: make_opt.append('-j') ex.check_run_cmd('make', make_opt) # libtuv output output = fs.join(build_home, 'libtuv.a') if not fs.exists(output): ex.fail('libtuv build failed - target not produced.') # copy output to libs directory fs.maybe_make_directory(build_libs) fs.copy(output, libtuv_output_path) return True
def build_libhttpparser(option): # Check if JerryScript submodule exists. if not fs.exists(path.HTTPPARSER_ROOT): ex.fail('libhttpparser submodule not exists!') return False # Move working directory to JerryScript build directory. build_home = fs.join(build_root, 'deps', 'httpparser') fs.maybe_make_directory(build_home) fs.chdir(build_home) # Set JerryScript cmake option. cmake_opt = [path.HTTPPARSER_ROOT] cmake_opt.append('-DCMAKE_TOOLCHAIN_FILE=' + cmake_toolchain_file) cmake_opt.append('-DBUILDTYPE=' + option.buildtype.capitalize()) if option.target_os == 'nuttx': cmake_opt.append('-DNUTTX_HOME=' + option.nuttx_home) cmake_opt.append('-DOS=NUTTX') if option.target_os == 'linux': cmake_opt.append('-DOS=LINUX') # inflate cmake option. inflate_cmake_option(cmake_opt, option) # Run cmake. ex.check_run_cmd('cmake', cmake_opt) # Set make option. make_opt = [] if not option.no_parallel_build: make_opt.append('-j') # Run make ex.check_run_cmd('make', make_opt) # Output output = fs.join(build_home, 'libhttpparser.a') if not fs.exists(output): ex.fail('libhttpparser build failed - target not produced.') # copy fs.copy(output, libhttpparser_output_path) return True
def build_iotjs(option): # Run js2c fs.chdir(path.TOOLS_ROOT) js2c(option.buildtype, option.no_snapshot, option.js_modules, jerry_output_path) # Move working directory to IoT.js build directory. build_home = fs.join(build_root, 'iotjs') fs.maybe_make_directory(build_home) fs.chdir(build_home) # Set JerryScript cmake option. cmake_opt = [path.PROJECT_ROOT] cmake_opt.append('-DCMAKE_TOOLCHAIN_FILE=' + cmake_toolchain_file) cmake_opt.append('-DCMAKE_BUILD_TYPE=' + option.buildtype.capitalize()) cmake_opt.append('-DTARGET_OS=' + option.target_os) cmake_opt.append('-DPLATFORM_DESCRIPT=' + platform_descriptor) # IoT.js module list cmake_opt.append('-DIOTJS_MODULES=' + (' ').join(option.native_modules)) if not option.no_snapshot: option.compile_flag.append('-DENABLE_SNAPSHOT') if option.target_os == 'nuttx': cmake_opt.append('-DNUTTX_HOME=' + option.nuttx_home) option.buildlib = True # --build-lib if option.buildlib: cmake_opt.append('-DBUILD_TO_LIB=YES') # --cmake-param cmake_opt += option.cmake_param # --external_static_lib cmake_opt.append('-DEXTERNAL_STATIC_LIB=' + ' '.join(option.external_static_lib)) # --external_shared_lib cmake_opt.append('-DEXTERNAL_SHARED_LIB=' + ' '.join(option.external_shared_lib)) # inflate cmake option inflate_cmake_option(cmake_opt, option) # Run cmake. ex.check_run_cmd('cmake', cmake_opt) # Set make option. make_opt = [] if not option.no_parallel_build: make_opt.append('-j') # Run make ex.check_run_cmd('make', make_opt) # Output output = fs.join(build_home, 'liblibiotjs.a' if option.buildlib else 'iotjs') if not fs.exists(output): ex.fail('IoT.js build failed - target not produced.') # copy dest_path = libiotjs_output_path if option.buildlib else iotjs_output_path fs.copy(output, dest_path) return True
def build_libjerry(option): # Check if JerryScript submodule exists. if not fs.exists(path.JERRY_ROOT): ex.fail('JerryScript submodule not exists!') # Move working directory to JerryScript build directory. build_home = fs.join(build_root, 'deps', 'jerry') fs.maybe_make_directory(build_home) fs.chdir(build_home) # Set JerryScript cmake option. cmake_opt = [path.JERRY_ROOT] cmake_opt.append('-DCMAKE_TOOLCHAIN_FILE=' + cmake_toolchain_file) if option.buildtype == 'debug': cmake_opt.append('-DCMAKE_BUILD_TYPE=Debug') if option.target_os == 'nuttx': cmake_opt.append('-DEXTERNAL_LIBC_INTERFACE=' + fs.join(option.nuttx_home, 'include')) if option.target_arch == 'arm': cmake_opt.append('-DEXTERNAL_CMAKE_SYSTEM_PROCESSOR=arm') if option.target_os == 'linux': cmake_opt.append('-DJERRY_LIBC=OFF') # --jerry-heaplimit if option.jerry_heaplimit: cmake_opt.append('-DMEM_HEAP_SIZE_KB=' + str(option.jerry_heaplimit)) # --jerry-heap-section if option.jerry_heap_section: cmake_opt.append('-DJERRY_HEAP_SECTION_ATTR=' + str(option.jerry_heap_section)) # --jerry-lto cmake_opt.append('-DENABLE_LTO=%s' % ('ON' if option.jerry_lto else 'OFF')) if option.jerry_memstat: cmake_opt.append('-DFEATURE_MEM_STATS=ON') # Turn on snapshot cmake_opt.append('-DFEATURE_SNAPSHOT_SAVE=OFF') if not option.no_snapshot: cmake_opt.append('-DFEATURE_SNAPSHOT_EXEC=ON') # --jerry-cmake-param cmake_opt += option.jerry_cmake_param # inflate cmake option. inflate_cmake_option(cmake_opt, option, for_jerry=True) # Run cmake. ex.check_run_cmd('cmake', cmake_opt) # make target - libjerry target_libjerry_name = 'jerry-core' target_libjerry = { 'target_name': target_libjerry_name, 'output_path': fs.join(build_home, 'lib', 'lib%s.a' % target_libjerry_name), 'dest_path': libjerry_output_path } targets = [] targets.append(target_libjerry) # make the target. for target in targets: # Make option. make_opt = ['-C', build_home, target['target_name']] if not option.no_parallel_build: make_opt.append('-j') # Run make for a target. ex.check_run_cmd('make', make_opt) # Check output output = target['output_path'] if not fs.exists(output): print output ex.fail('JerryScript build failed - target not produced.') # copy fs.copy(output, target['dest_path']) return True
def init_submodule(): ex.check_run_cmd('git', ['submodule', 'init']) ex.check_run_cmd('git', ['submodule', 'update'])