diff --git a/.github/versions.json b/.github/versions.json index bfd700c..2fe4780 100644 --- a/.github/versions.json +++ b/.github/versions.json @@ -6,7 +6,7 @@ }, "dependencies": { "llhttp": "9.2.1", - "libuv": "1.51.0", + "libuv": "1.52.0", "libsodium": "1.0.20", "mbedtls": "3.6.5", "zlib": "1.3.1" @@ -125,7 +125,7 @@ "binary_name": "ant.exe", "deps": ["llhttp"], "tls_library": "openssl", - "static_link": false, + "static_link": true, "cmake_generator": "MinGW Makefiles", "extra_meson_args": "-Dc_std=gnu2x" } diff --git a/BUILDING.md b/BUILDING.md index 03283e9..89d6146 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -102,9 +102,9 @@ System libraries required: The remaining dependencies are vendored as Meson subprojects under `vendor/` and are fetched automatically: -- libuv 1.51.0 +- libuv 1.52.0 - yyjson 0.12.0 -- zlib-ng 2.3.2 +- zlib-ng 2.3.3 - nghttp2 - pcre2 - libffi diff --git a/meson.build b/meson.build index 6fc50e6..c655390 100644 --- a/meson.build +++ b/meson.build @@ -9,48 +9,28 @@ project('ant', 'c', default_options: [ 'warning_level=2' ], subproject_dir: 'vendor') -src_root = meson.project_source_root() -vendor_dir = 'vendor' +python = find_program('python3') is_static = get_option('static_link') -subdir('meson') +src_root = meson.project_source_root() +include = include_directories('include') -module_files = run_command('sh', '-c', - 'cd "$MESON_SOURCE_ROOT" && ls src/modules/*.c', +core_files = files(run_command( + python, files('meson/sources.py'), files('sources.json'), 'core', check: true -).stdout().strip().split() +).stdout().strip().split()) -lib_sources = files( - 'src/roots.c', - 'src/utils.c', - 'src/utf8.c', - 'src/escape.c', - 'src/reactor.c', - 'src/sugar.c', - 'src/ant.c', - 'src/errors.c', - 'src/stack.c', - 'src/gc.c', - 'src/repl.c', - 'src/runtime.c', - 'src/snapshot.c', - 'src/esm/remote.c', - 'src/cli/pkg.c', - 'src/cli/misc.c', - 'src/cli/version.c', -) + files(module_files) +lib_sources = files(run_command( + python, files('meson/sources.py'), files('sources.json'), 'engine', + check: true +).stdout().strip().split()) -include = include_directories('include') -build_include = include_directories('.') -strip_include = include_directories('src/strip') +subdir('meson') libant = static_library( 'ant', lib_sources + [snapshot_h], - include_directories: [ - include, version_include, - build_include, strip_include - ], + include_directories: include, dependencies: ant_deps, install: true ) @@ -85,9 +65,7 @@ pkg_dep = declare_dependency( libant_dep = declare_dependency( link_with: libant, - include_directories: [ - include, version_include, build_include - ], + include_directories: include, dependencies: ant_deps + [oxc_dep, pkg_dep] ) @@ -98,8 +76,7 @@ endif executable( 'ant', - files('src/main.c') + [snapshot_h], - include_directories: [strip_include], + files('src/main.c'), dependencies: libant_dep, link_args: link_args ) \ No newline at end of file diff --git a/meson/deps/meson.build b/meson/deps/meson.build index 4bdcdec..cbcfe6c 100644 --- a/meson/deps/meson.build +++ b/meson/deps/meson.build @@ -64,8 +64,8 @@ tlsuv_compile_args = [ '-Wno-sometimes-uninitialized', '-Wno-cast-function-type-mismatch', '-Wno-missing-field-initializers', - '-I' + meson.project_source_root() / vendor_dir / 'libuv-v1.51.0' / 'include' ] + if cmake_prefix != '' tlsuv_compile_args += ['-I' + cmake_prefix / 'include'] endif @@ -147,11 +147,11 @@ deps_info = { 'inc': 'src', }, 'libuv': { - 'dir': 'libuv-v1.51.0', + 'dir': 'libuv-v1.52.0', 'inc': 'include', }, 'zlib-ng': { - 'dir': 'zlib-ng-2.3.2', + 'dir': 'zlib-ng-2.3.3', 'inc': '', 'build_dir': true, }, diff --git a/meson/snapshot/meson.build b/meson/snapshot/meson.build index e97a149..3444fa5 100644 --- a/meson/snapshot/meson.build +++ b/meson/snapshot/meson.build @@ -1,13 +1,8 @@ node = find_program('node', required: true) -core_files = run_command('sh', '-c', - 'find ' + src_root / 'src' / 'core' + ' -name "*.js" ! -name "index.js" | sort', - check: true -).stdout().strip().split() - snapshot_h = custom_target( 'snapshot', - input: [src_root / 'src' / 'core' / 'index.ts'] + files(core_files), + input: core_files, output: 'snapshot_data.h', command: [ node, diff --git a/meson/sources.py b/meson/sources.py new file mode 100644 index 0000000..e807ffe --- /dev/null +++ b/meson/sources.py @@ -0,0 +1,11 @@ +import sys, glob, json + +data = json.load(open(sys.argv[1])) +group = data[sys.argv[2]] + +matched = set() +for p in group['patterns']: + matched.update(glob.glob(p, recursive=True)) + +matched -= set(group.get('exclude', [])) +print('\n'.join(sorted(matched))) \ No newline at end of file diff --git a/meson/version/meson.build b/meson/version/meson.build index 5f94b18..d0b9224 100644 --- a/meson/version/meson.build +++ b/meson/version/meson.build @@ -18,15 +18,10 @@ endif target_triple = target_triple + (tls_lib == 'mbedtls' ? '-mbedtls' : '') -version_conf = configuration_data() -version_conf.set_quoted('ANT_VERSION', ant_version) -version_conf.set('ANT_BUILD_TIMESTAMP', timestamp) -version_conf.set_quoted('ANT_GIT_HASH', git_hash) -version_conf.set_quoted('ANT_TARGET_TRIPLE', target_triple) - -config_h = configure_file( - output: 'config.h', - configuration: version_conf +add_project_arguments( + '-DANT_VERSION="' + ant_version + '"', + '-DANT_BUILD_TIMESTAMP=' + timestamp, + '-DANT_GIT_HASH="' + git_hash + '"', + '-DANT_TARGET_TRIPLE="' + target_triple + '"', + language: 'c' ) - -version_include = include_directories('.') \ No newline at end of file diff --git a/sources.json b/sources.json new file mode 100644 index 0000000..1ca4f60 --- /dev/null +++ b/sources.json @@ -0,0 +1,10 @@ +{ + "engine": { + "patterns": ["src/*.c", "src/esm/*.c", "src/cli/*.c", "src/modules/*.c"], + "exclude": ["src/main.c"] + }, + "core": { + "patterns": ["src/core/**/*.ts"], + "exclude": [] + } +} diff --git a/src/cli/pkg.c b/src/cli/pkg.c index c962536..4433bcb 100644 --- a/src/cli/pkg.c +++ b/src/cli/pkg.c @@ -15,7 +15,6 @@ #include "cli/version.h" #include "utils.h" -#include "config.h" #include "progress.h" #include "modules/io.h" diff --git a/src/cli/version.c b/src/cli/version.c index 02341aa..f5b445a 100644 --- a/src/cli/version.c +++ b/src/cli/version.c @@ -1,5 +1,4 @@ #include "utils.h" -#include "config.h" #include #include diff --git a/src/main.c b/src/main.c index 82e3b65..fd917bb 100644 --- a/src/main.c +++ b/src/main.c @@ -11,7 +11,6 @@ #include #include "ant.h" -#include "config.h" #include "repl.h" #include "utils.h" #include "reactor.h" diff --git a/src/modules/fetch.c b/src/modules/fetch.c index 3979bb6..4fdeaf0 100644 --- a/src/modules/fetch.c +++ b/src/modules/fetch.c @@ -10,7 +10,6 @@ #include "ant.h" #include "errors.h" -#include "config.h" #include "common.h" #include "internal.h" #include "runtime.h" diff --git a/src/modules/navigator.c b/src/modules/navigator.c index b49adcc..c78d3dc 100644 --- a/src/modules/navigator.c +++ b/src/modules/navigator.c @@ -13,7 +13,6 @@ #include "ant.h" #include "errors.h" -#include "config.h" #include "runtime.h" #include "internal.h" #include "modules/navigator.h" diff --git a/src/modules/process.c b/src/modules/process.c index 392b575..db29ad7 100644 --- a/src/modules/process.c +++ b/src/modules/process.c @@ -28,7 +28,6 @@ #include "ant.h" #include "errors.h" -#include "config.h" #include "internal.h" #include "runtime.h" #include "utils.h" diff --git a/src/modules/server.c b/src/modules/server.c index 0f002b1..e623dba 100644 --- a/src/modules/server.c +++ b/src/modules/server.c @@ -12,7 +12,6 @@ #include "ant.h" #include "gc.h" #include "reactor.h" -#include "config.h" #include "runtime.h" #include "internal.h" diff --git a/src/repl.c b/src/repl.c index 70139a5..21c5bbe 100644 --- a/src/repl.c +++ b/src/repl.c @@ -21,7 +21,6 @@ #include "ant.h" #include "repl.h" #include "reactor.h" -#include "config.h" #include "runtime.h" #include "internal.h" #include "modules/io.h"