project('quickjs', 'c', meson_version: '>=1.1') cc = meson.get_compiler('c') threads = dependency('threads') deps = [] deps += cc.find_library('m', required:false) deps += threads fs = import('fs') ver_file = join_paths(meson.current_source_dir(), 'VERSION.md') qjs_ver = fs.read(ver_file).strip() add_project_arguments('-DCONFIG_VERSION="@0@"'.format(qjs_ver), '-mcmodel=large', language: 'c') if get_option('bignum') add_project_arguments('-DCONFIG_BIGNUM', language : 'c') endif lib_sources = ['libregexp.c', 'quickjs.c', 'libunicode.c', 'cutils.c', 'dtoa.c'] libquickjs = library('quickjs', lib_sources, dependencies: deps ) quickjs_dep = declare_dependency(link_with: libquickjs, include_directories: include_directories('.'), dependencies: deps) qjsc = executable('qjsc', 'qjsc.c', 'quickjs-libc.c', dependencies: [quickjs_dep,threads], build_by_default:false ) qjsrepl_c = custom_target( 'qjsrepl_c', output: 'repl.c', input: 'repl.js', command: [qjsc, '-fbignum', '-c', '-o', '@OUTPUT@', '-m', '@INPUT@'], ) qjs = executable('qjs', 'qjs.c', 'quickjs-libc.c', qjsrepl_c, dependencies: [quickjs_dep, threads], build_by_default:false ) test_root = join_paths(meson.project_source_root(), 'tests') base_tests = { 'closure': ['test_closure.js'], 'language': ['test_language.js'], 'loop': ['test_loop.js'], 'op_overloading': ['--bignum', 'test_op_overloading.js'], 'bignum': ['--bignum', 'test_bignum.js'], 'qjscalc': ['--qjscalc', 'test_qjscalc.js'] } test_suite = base_tests is_windows = host_machine.system() == 'windows' if not is_windows test_suite += { 'builtin': ['test_builtin.js'], 'std': ['test_std.js'], 'worker': ['test_worker.js'] } endif foreach test_name, test_args : test_suite test(test_name, qjs, args: test_args, workdir: test_root) endforeach benchmark('microbench', qjs, args: ['microbench.js'], workdir: test_root, timeout: 0)