frida 16.2.1 → 16.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BSDmakefile +6 -0
- package/Makefile +16 -0
- package/README.md +14 -11
- package/configure +18 -0
- package/configure.bat +22 -0
- package/dist/native.js +0 -8
- package/lib/application.ts +98 -0
- package/lib/authentication.ts +3 -0
- package/lib/build.py +50 -0
- package/lib/bus.ts +30 -0
- package/lib/cancellable.ts +33 -0
- package/lib/child.ts +15 -0
- package/lib/crash.ts +11 -0
- package/lib/device.ts +329 -0
- package/lib/device_manager.ts +69 -0
- package/lib/endpoint_parameters.ts +56 -0
- package/lib/icon.ts +15 -0
- package/lib/index.ts +311 -0
- package/lib/iostream.ts +78 -0
- package/lib/meson.build +53 -0
- package/lib/native.ts +9 -0
- package/lib/portal_membership.ts +10 -0
- package/lib/portal_service.ts +105 -0
- package/lib/process.ts +57 -0
- package/lib/relay.ts +44 -0
- package/lib/script.ts +352 -0
- package/lib/session.ts +113 -0
- package/lib/signals.ts +45 -0
- package/lib/socket_address.ts +35 -0
- package/lib/spawn.ts +4 -0
- package/lib/system_parameters.ts +78 -0
- package/make.bat +23 -0
- package/meson.build +160 -0
- package/meson.options +11 -0
- package/package.json +27 -6
- package/releng/deps.py +1133 -0
- package/releng/deps.toml +391 -0
- package/releng/devkit-assets/frida-core-example-unix.c +188 -0
- package/releng/devkit-assets/frida-core-example-windows.c +197 -0
- package/releng/devkit-assets/frida-core-example.sln +28 -0
- package/releng/devkit-assets/frida-core-example.vcxproj +157 -0
- package/releng/devkit-assets/frida-core-example.vcxproj.filters +27 -0
- package/releng/devkit-assets/frida-gum-example-unix.c +122 -0
- package/releng/devkit-assets/frida-gum-example-windows.c +132 -0
- package/releng/devkit-assets/frida-gum-example.sln +28 -0
- package/releng/devkit-assets/frida-gum-example.vcxproj +157 -0
- package/releng/devkit-assets/frida-gum-example.vcxproj.filters +27 -0
- package/releng/devkit-assets/frida-gumjs-example-unix.c +84 -0
- package/releng/devkit-assets/frida-gumjs-example-windows.c +91 -0
- package/releng/devkit-assets/frida-gumjs-example.sln +28 -0
- package/releng/devkit-assets/frida-gumjs-example.vcxproj +157 -0
- package/releng/devkit-assets/frida-gumjs-example.vcxproj.filters +27 -0
- package/releng/devkit.py +535 -0
- package/releng/env.py +420 -0
- package/releng/env_android.py +150 -0
- package/releng/env_apple.py +176 -0
- package/releng/env_generic.py +373 -0
- package/releng/frida_version.py +69 -0
- package/releng/machine_file.py +44 -0
- package/releng/machine_spec.py +290 -0
- package/releng/meson/meson.py +27 -0
- package/releng/meson/mesonbuild/__init__.py +0 -0
- package/releng/meson/mesonbuild/_pathlib.py +63 -0
- package/releng/meson/mesonbuild/_typing.py +69 -0
- package/releng/meson/mesonbuild/arglist.py +321 -0
- package/releng/meson/mesonbuild/ast/__init__.py +23 -0
- package/releng/meson/mesonbuild/ast/interpreter.py +441 -0
- package/releng/meson/mesonbuild/ast/introspection.py +374 -0
- package/releng/meson/mesonbuild/ast/postprocess.py +109 -0
- package/releng/meson/mesonbuild/ast/printer.py +620 -0
- package/releng/meson/mesonbuild/ast/visitor.py +161 -0
- package/releng/meson/mesonbuild/backend/__init__.py +0 -0
- package/releng/meson/mesonbuild/backend/backends.py +2047 -0
- package/releng/meson/mesonbuild/backend/ninjabackend.py +3808 -0
- package/releng/meson/mesonbuild/backend/nonebackend.py +26 -0
- package/releng/meson/mesonbuild/backend/vs2010backend.py +2078 -0
- package/releng/meson/mesonbuild/backend/vs2012backend.py +35 -0
- package/releng/meson/mesonbuild/backend/vs2013backend.py +34 -0
- package/releng/meson/mesonbuild/backend/vs2015backend.py +35 -0
- package/releng/meson/mesonbuild/backend/vs2017backend.py +59 -0
- package/releng/meson/mesonbuild/backend/vs2019backend.py +54 -0
- package/releng/meson/mesonbuild/backend/vs2022backend.py +54 -0
- package/releng/meson/mesonbuild/backend/xcodebackend.py +1781 -0
- package/releng/meson/mesonbuild/build.py +3249 -0
- package/releng/meson/mesonbuild/cargo/__init__.py +5 -0
- package/releng/meson/mesonbuild/cargo/builder.py +238 -0
- package/releng/meson/mesonbuild/cargo/cfg.py +274 -0
- package/releng/meson/mesonbuild/cargo/interpreter.py +733 -0
- package/releng/meson/mesonbuild/cargo/manifest.py +227 -0
- package/releng/meson/mesonbuild/cargo/version.py +95 -0
- package/releng/meson/mesonbuild/cmake/__init__.py +28 -0
- package/releng/meson/mesonbuild/cmake/common.py +331 -0
- package/releng/meson/mesonbuild/cmake/data/__init__.py +0 -0
- package/releng/meson/mesonbuild/cmake/data/preload.cmake +82 -0
- package/releng/meson/mesonbuild/cmake/executor.py +241 -0
- package/releng/meson/mesonbuild/cmake/fileapi.py +324 -0
- package/releng/meson/mesonbuild/cmake/generator.py +186 -0
- package/releng/meson/mesonbuild/cmake/interpreter.py +1267 -0
- package/releng/meson/mesonbuild/cmake/toolchain.py +248 -0
- package/releng/meson/mesonbuild/cmake/traceparser.py +814 -0
- package/releng/meson/mesonbuild/cmake/tracetargets.py +161 -0
- package/releng/meson/mesonbuild/compilers/__init__.py +86 -0
- package/releng/meson/mesonbuild/compilers/asm.py +307 -0
- package/releng/meson/mesonbuild/compilers/c.py +788 -0
- package/releng/meson/mesonbuild/compilers/c_function_attributes.py +143 -0
- package/releng/meson/mesonbuild/compilers/compilers.py +1388 -0
- package/releng/meson/mesonbuild/compilers/cpp.py +1035 -0
- package/releng/meson/mesonbuild/compilers/cs.py +136 -0
- package/releng/meson/mesonbuild/compilers/cuda.py +806 -0
- package/releng/meson/mesonbuild/compilers/cython.py +91 -0
- package/releng/meson/mesonbuild/compilers/d.py +861 -0
- package/releng/meson/mesonbuild/compilers/detect.py +1396 -0
- package/releng/meson/mesonbuild/compilers/fortran.py +523 -0
- package/releng/meson/mesonbuild/compilers/java.py +113 -0
- package/releng/meson/mesonbuild/compilers/mixins/__init__.py +0 -0
- package/releng/meson/mesonbuild/compilers/mixins/arm.py +167 -0
- package/releng/meson/mesonbuild/compilers/mixins/ccrx.py +113 -0
- package/releng/meson/mesonbuild/compilers/mixins/clang.py +170 -0
- package/releng/meson/mesonbuild/compilers/mixins/clike.py +1330 -0
- package/releng/meson/mesonbuild/compilers/mixins/compcert.py +117 -0
- package/releng/meson/mesonbuild/compilers/mixins/elbrus.py +93 -0
- package/releng/meson/mesonbuild/compilers/mixins/emscripten.py +89 -0
- package/releng/meson/mesonbuild/compilers/mixins/gnu.py +629 -0
- package/releng/meson/mesonbuild/compilers/mixins/intel.py +167 -0
- package/releng/meson/mesonbuild/compilers/mixins/islinker.py +120 -0
- package/releng/meson/mesonbuild/compilers/mixins/metrowerks.py +279 -0
- package/releng/meson/mesonbuild/compilers/mixins/pgi.py +88 -0
- package/releng/meson/mesonbuild/compilers/mixins/ti.py +130 -0
- package/releng/meson/mesonbuild/compilers/mixins/visualstudio.py +458 -0
- package/releng/meson/mesonbuild/compilers/mixins/xc16.py +111 -0
- package/releng/meson/mesonbuild/compilers/objc.py +120 -0
- package/releng/meson/mesonbuild/compilers/objcpp.py +102 -0
- package/releng/meson/mesonbuild/compilers/rust.py +230 -0
- package/releng/meson/mesonbuild/compilers/swift.py +131 -0
- package/releng/meson/mesonbuild/compilers/vala.py +121 -0
- package/releng/meson/mesonbuild/coredata.py +1532 -0
- package/releng/meson/mesonbuild/dependencies/__init__.py +252 -0
- package/releng/meson/mesonbuild/dependencies/base.py +663 -0
- package/releng/meson/mesonbuild/dependencies/boost.py +1083 -0
- package/releng/meson/mesonbuild/dependencies/cmake.py +656 -0
- package/releng/meson/mesonbuild/dependencies/coarrays.py +80 -0
- package/releng/meson/mesonbuild/dependencies/configtool.py +163 -0
- package/releng/meson/mesonbuild/dependencies/cuda.py +295 -0
- package/releng/meson/mesonbuild/dependencies/data/CMakeLists.txt +102 -0
- package/releng/meson/mesonbuild/dependencies/data/CMakeListsLLVM.txt +204 -0
- package/releng/meson/mesonbuild/dependencies/data/CMakePathInfo.txt +31 -0
- package/releng/meson/mesonbuild/dependencies/data/__init__.py +0 -0
- package/releng/meson/mesonbuild/dependencies/detect.py +225 -0
- package/releng/meson/mesonbuild/dependencies/dev.py +707 -0
- package/releng/meson/mesonbuild/dependencies/dub.py +424 -0
- package/releng/meson/mesonbuild/dependencies/factory.py +146 -0
- package/releng/meson/mesonbuild/dependencies/framework.py +111 -0
- package/releng/meson/mesonbuild/dependencies/hdf5.py +168 -0
- package/releng/meson/mesonbuild/dependencies/misc.py +618 -0
- package/releng/meson/mesonbuild/dependencies/mpi.py +231 -0
- package/releng/meson/mesonbuild/dependencies/pkgconfig.py +570 -0
- package/releng/meson/mesonbuild/dependencies/platform.py +52 -0
- package/releng/meson/mesonbuild/dependencies/python.py +431 -0
- package/releng/meson/mesonbuild/dependencies/qt.py +484 -0
- package/releng/meson/mesonbuild/dependencies/scalapack.py +142 -0
- package/releng/meson/mesonbuild/dependencies/ui.py +281 -0
- package/releng/meson/mesonbuild/depfile.py +82 -0
- package/releng/meson/mesonbuild/envconfig.py +480 -0
- package/releng/meson/mesonbuild/environment.py +987 -0
- package/releng/meson/mesonbuild/interpreter/__init__.py +47 -0
- package/releng/meson/mesonbuild/interpreter/compiler.py +900 -0
- package/releng/meson/mesonbuild/interpreter/dependencyfallbacks.py +386 -0
- package/releng/meson/mesonbuild/interpreter/interpreter.py +3595 -0
- package/releng/meson/mesonbuild/interpreter/interpreterobjects.py +1096 -0
- package/releng/meson/mesonbuild/interpreter/kwargs.py +479 -0
- package/releng/meson/mesonbuild/interpreter/mesonmain.py +487 -0
- package/releng/meson/mesonbuild/interpreter/primitives/__init__.py +29 -0
- package/releng/meson/mesonbuild/interpreter/primitives/array.py +108 -0
- package/releng/meson/mesonbuild/interpreter/primitives/boolean.py +52 -0
- package/releng/meson/mesonbuild/interpreter/primitives/dict.py +88 -0
- package/releng/meson/mesonbuild/interpreter/primitives/integer.py +86 -0
- package/releng/meson/mesonbuild/interpreter/primitives/range.py +38 -0
- package/releng/meson/mesonbuild/interpreter/primitives/string.py +247 -0
- package/releng/meson/mesonbuild/interpreter/type_checking.py +853 -0
- package/releng/meson/mesonbuild/interpreterbase/__init__.py +126 -0
- package/releng/meson/mesonbuild/interpreterbase/_unholder.py +25 -0
- package/releng/meson/mesonbuild/interpreterbase/baseobjects.py +174 -0
- package/releng/meson/mesonbuild/interpreterbase/decorators.py +806 -0
- package/releng/meson/mesonbuild/interpreterbase/disabler.py +35 -0
- package/releng/meson/mesonbuild/interpreterbase/exceptions.py +22 -0
- package/releng/meson/mesonbuild/interpreterbase/helpers.py +67 -0
- package/releng/meson/mesonbuild/interpreterbase/interpreterbase.py +665 -0
- package/releng/meson/mesonbuild/interpreterbase/operator.py +32 -0
- package/releng/meson/mesonbuild/linkers/__init__.py +20 -0
- package/releng/meson/mesonbuild/linkers/base.py +39 -0
- package/releng/meson/mesonbuild/linkers/detect.py +229 -0
- package/releng/meson/mesonbuild/linkers/linkers.py +1614 -0
- package/releng/meson/mesonbuild/mcompile.py +380 -0
- package/releng/meson/mesonbuild/mconf.py +368 -0
- package/releng/meson/mesonbuild/mdevenv.py +234 -0
- package/releng/meson/mesonbuild/mdist.py +376 -0
- package/releng/meson/mesonbuild/mesondata.py +38 -0
- package/releng/meson/mesonbuild/mesonlib.py +23 -0
- package/releng/meson/mesonbuild/mesonmain.py +289 -0
- package/releng/meson/mesonbuild/minit.py +204 -0
- package/releng/meson/mesonbuild/minstall.py +864 -0
- package/releng/meson/mesonbuild/mintro.py +667 -0
- package/releng/meson/mesonbuild/mlog.py +542 -0
- package/releng/meson/mesonbuild/modules/__init__.py +270 -0
- package/releng/meson/mesonbuild/modules/cmake.py +442 -0
- package/releng/meson/mesonbuild/modules/cuda.py +377 -0
- package/releng/meson/mesonbuild/modules/dlang.py +117 -0
- package/releng/meson/mesonbuild/modules/external_project.py +306 -0
- package/releng/meson/mesonbuild/modules/fs.py +323 -0
- package/releng/meson/mesonbuild/modules/gnome.py +2215 -0
- package/releng/meson/mesonbuild/modules/hotdoc.py +487 -0
- package/releng/meson/mesonbuild/modules/i18n.py +405 -0
- package/releng/meson/mesonbuild/modules/icestorm.py +123 -0
- package/releng/meson/mesonbuild/modules/java.py +112 -0
- package/releng/meson/mesonbuild/modules/keyval.py +65 -0
- package/releng/meson/mesonbuild/modules/modtest.py +33 -0
- package/releng/meson/mesonbuild/modules/pkgconfig.py +744 -0
- package/releng/meson/mesonbuild/modules/python.py +556 -0
- package/releng/meson/mesonbuild/modules/python3.py +85 -0
- package/releng/meson/mesonbuild/modules/qt.py +621 -0
- package/releng/meson/mesonbuild/modules/qt4.py +23 -0
- package/releng/meson/mesonbuild/modules/qt5.py +23 -0
- package/releng/meson/mesonbuild/modules/qt6.py +22 -0
- package/releng/meson/mesonbuild/modules/rust.py +355 -0
- package/releng/meson/mesonbuild/modules/simd.py +114 -0
- package/releng/meson/mesonbuild/modules/sourceset.py +291 -0
- package/releng/meson/mesonbuild/modules/wayland.py +151 -0
- package/releng/meson/mesonbuild/modules/windows.py +207 -0
- package/releng/meson/mesonbuild/mparser.py +1114 -0
- package/releng/meson/mesonbuild/msetup.py +365 -0
- package/releng/meson/mesonbuild/msubprojects.py +764 -0
- package/releng/meson/mesonbuild/mtest.py +2201 -0
- package/releng/meson/mesonbuild/munstable_coredata.py +107 -0
- package/releng/meson/mesonbuild/optinterpreter.py +276 -0
- package/releng/meson/mesonbuild/programs.py +367 -0
- package/releng/meson/mesonbuild/rewriter.py +1075 -0
- package/releng/meson/mesonbuild/scripts/__init__.py +10 -0
- package/releng/meson/mesonbuild/scripts/clangformat.py +55 -0
- package/releng/meson/mesonbuild/scripts/clangtidy.py +30 -0
- package/releng/meson/mesonbuild/scripts/cleantrees.py +35 -0
- package/releng/meson/mesonbuild/scripts/cmake_run_ctgt.py +103 -0
- package/releng/meson/mesonbuild/scripts/cmd_or_ps.ps1 +17 -0
- package/releng/meson/mesonbuild/scripts/copy.py +19 -0
- package/releng/meson/mesonbuild/scripts/coverage.py +214 -0
- package/releng/meson/mesonbuild/scripts/delwithsuffix.py +27 -0
- package/releng/meson/mesonbuild/scripts/depfixer.py +495 -0
- package/releng/meson/mesonbuild/scripts/depscan.py +198 -0
- package/releng/meson/mesonbuild/scripts/dirchanger.py +20 -0
- package/releng/meson/mesonbuild/scripts/env2mfile.py +402 -0
- package/releng/meson/mesonbuild/scripts/externalproject.py +106 -0
- package/releng/meson/mesonbuild/scripts/gettext.py +86 -0
- package/releng/meson/mesonbuild/scripts/gtkdochelper.py +286 -0
- package/releng/meson/mesonbuild/scripts/hotdochelper.py +40 -0
- package/releng/meson/mesonbuild/scripts/itstool.py +77 -0
- package/releng/meson/mesonbuild/scripts/meson_exe.py +115 -0
- package/releng/meson/mesonbuild/scripts/msgfmthelper.py +29 -0
- package/releng/meson/mesonbuild/scripts/pycompile.py +54 -0
- package/releng/meson/mesonbuild/scripts/python_info.py +121 -0
- package/releng/meson/mesonbuild/scripts/regen_checker.py +55 -0
- package/releng/meson/mesonbuild/scripts/run_tool.py +58 -0
- package/releng/meson/mesonbuild/scripts/scanbuild.py +57 -0
- package/releng/meson/mesonbuild/scripts/symbolextractor.py +322 -0
- package/releng/meson/mesonbuild/scripts/tags.py +44 -0
- package/releng/meson/mesonbuild/scripts/test_loaded_modules.py +14 -0
- package/releng/meson/mesonbuild/scripts/uninstall.py +41 -0
- package/releng/meson/mesonbuild/scripts/vcstagger.py +35 -0
- package/releng/meson/mesonbuild/scripts/yasm.py +24 -0
- package/releng/meson/mesonbuild/templates/__init__.py +0 -0
- package/releng/meson/mesonbuild/templates/cpptemplates.py +143 -0
- package/releng/meson/mesonbuild/templates/cstemplates.py +90 -0
- package/releng/meson/mesonbuild/templates/ctemplates.py +126 -0
- package/releng/meson/mesonbuild/templates/cudatemplates.py +143 -0
- package/releng/meson/mesonbuild/templates/dlangtemplates.py +109 -0
- package/releng/meson/mesonbuild/templates/fortrantemplates.py +101 -0
- package/releng/meson/mesonbuild/templates/javatemplates.py +94 -0
- package/releng/meson/mesonbuild/templates/mesontemplates.py +70 -0
- package/releng/meson/mesonbuild/templates/objcpptemplates.py +126 -0
- package/releng/meson/mesonbuild/templates/objctemplates.py +126 -0
- package/releng/meson/mesonbuild/templates/rusttemplates.py +79 -0
- package/releng/meson/mesonbuild/templates/samplefactory.py +41 -0
- package/releng/meson/mesonbuild/templates/sampleimpl.py +160 -0
- package/releng/meson/mesonbuild/templates/valatemplates.py +82 -0
- package/releng/meson/mesonbuild/utils/__init__.py +0 -0
- package/releng/meson/mesonbuild/utils/core.py +166 -0
- package/releng/meson/mesonbuild/utils/platform.py +27 -0
- package/releng/meson/mesonbuild/utils/posix.py +32 -0
- package/releng/meson/mesonbuild/utils/universal.py +2445 -0
- package/releng/meson/mesonbuild/utils/vsenv.py +126 -0
- package/releng/meson/mesonbuild/utils/win32.py +29 -0
- package/releng/meson/mesonbuild/wrap/__init__.py +59 -0
- package/releng/meson/mesonbuild/wrap/wrap.py +846 -0
- package/releng/meson/mesonbuild/wrap/wraptool.py +198 -0
- package/releng/meson-scripts/BSDmakefile +6 -0
- package/releng/meson-scripts/Makefile +16 -0
- package/releng/meson-scripts/configure +18 -0
- package/releng/meson-scripts/configure.bat +22 -0
- package/releng/meson-scripts/make.bat +23 -0
- package/releng/meson_configure.py +506 -0
- package/releng/meson_make.py +131 -0
- package/releng/mkdevkit.py +107 -0
- package/releng/mkfatmacho.py +54 -0
- package/releng/post-process-oabi.py +97 -0
- package/releng/progress.py +14 -0
- package/releng/sync-from-upstream.py +185 -0
- package/releng/tomlkit/tomlkit/__init__.py +59 -0
- package/releng/tomlkit/tomlkit/_compat.py +22 -0
- package/releng/tomlkit/tomlkit/_types.py +83 -0
- package/releng/tomlkit/tomlkit/_utils.py +158 -0
- package/releng/tomlkit/tomlkit/api.py +308 -0
- package/releng/tomlkit/tomlkit/container.py +875 -0
- package/releng/tomlkit/tomlkit/exceptions.py +227 -0
- package/releng/tomlkit/tomlkit/items.py +1967 -0
- package/releng/tomlkit/tomlkit/parser.py +1141 -0
- package/releng/tomlkit/tomlkit/py.typed +0 -0
- package/releng/tomlkit/tomlkit/source.py +180 -0
- package/releng/tomlkit/tomlkit/toml_char.py +52 -0
- package/releng/tomlkit/tomlkit/toml_document.py +7 -0
- package/releng/tomlkit/tomlkit/toml_file.py +58 -0
- package/releng/winenv.py +140 -0
- package/scripts/adjust-version.py +19 -0
- package/scripts/detect-version.py +40 -0
- package/scripts/fetch-abi-bits.py +343 -0
- package/scripts/install.js +23 -0
- package/scripts/package.py +15 -0
- package/src/addon.cc +76 -0
- package/src/application.cc +148 -0
- package/src/application.h +31 -0
- package/src/authentication.cc +174 -0
- package/src/authentication.h +24 -0
- package/src/bus.cc +167 -0
- package/src/bus.h +33 -0
- package/src/cancellable.cc +117 -0
- package/src/cancellable.h +31 -0
- package/src/child.cc +150 -0
- package/src/child.h +32 -0
- package/src/crash.cc +122 -0
- package/src/crash.h +30 -0
- package/src/device.cc +1302 -0
- package/src/device.h +55 -0
- package/src/device_manager.cc +362 -0
- package/src/device_manager.h +35 -0
- package/src/endpoint_parameters.cc +171 -0
- package/src/endpoint_parameters.h +28 -0
- package/src/glib_context.cc +62 -0
- package/src/glib_context.h +29 -0
- package/src/glib_object.cc +25 -0
- package/src/glib_object.h +37 -0
- package/src/iostream.cc +247 -0
- package/src/iostream.h +30 -0
- package/src/meson.build +26 -0
- package/src/operation.h +94 -0
- package/src/portal_membership.cc +100 -0
- package/src/portal_membership.h +26 -0
- package/src/portal_service.cc +401 -0
- package/src/portal_service.h +40 -0
- package/src/process.cc +135 -0
- package/src/process.h +30 -0
- package/src/relay.cc +139 -0
- package/src/relay.h +31 -0
- package/src/runtime.cc +443 -0
- package/src/runtime.h +64 -0
- package/src/script.cc +301 -0
- package/src/script.h +36 -0
- package/src/session.cc +860 -0
- package/src/session.h +42 -0
- package/src/signals.cc +334 -0
- package/src/signals.h +47 -0
- package/src/spawn.cc +95 -0
- package/src/spawn.h +27 -0
- package/src/usage_monitor.h +117 -0
- package/src/uv_context.cc +118 -0
- package/src/uv_context.h +40 -0
- package/src/win_delay_load_hook.cc +63 -0
- package/subprojects/frida-core.wrap +8 -0
- package/subprojects/nan.wrap +9 -0
- package/subprojects/packagefiles/nan.patch +13 -0
- package/test/data/index.ts +13 -0
- package/test/data/unixvictim-linux-x86 +0 -0
- package/test/data/unixvictim-linux-x86_64 +0 -0
- package/test/data/unixvictim-macos +0 -0
- package/test/device.ts +27 -0
- package/test/device_manager.ts +16 -0
- package/test/labrat.ts +32 -0
- package/test/script.ts +176 -0
- package/test/session.ts +73 -0
- package/tsconfig.json +18 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2012-2020 Meson development team
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
"""Representations specific to the arm family of compilers."""
|
|
7
|
+
|
|
8
|
+
import os
|
|
9
|
+
import typing as T
|
|
10
|
+
|
|
11
|
+
from ... import mesonlib
|
|
12
|
+
from ...linkers.linkers import ArmClangDynamicLinker
|
|
13
|
+
from ...mesonlib import OptionKey
|
|
14
|
+
from ..compilers import clike_debug_args
|
|
15
|
+
from .clang import clang_color_args
|
|
16
|
+
|
|
17
|
+
if T.TYPE_CHECKING:
|
|
18
|
+
from ...environment import Environment
|
|
19
|
+
from ...compilers.compilers import Compiler
|
|
20
|
+
else:
|
|
21
|
+
# This is a bit clever, for mypy we pretend that these mixins descend from
|
|
22
|
+
# Compiler, so we get all of the methods and attributes defined for us, but
|
|
23
|
+
# for runtime we make them descend from object (which all classes normally
|
|
24
|
+
# do). This gives up DRYer type checking, with no runtime impact
|
|
25
|
+
Compiler = object
|
|
26
|
+
|
|
27
|
+
arm_optimization_args: T.Dict[str, T.List[str]] = {
|
|
28
|
+
'plain': [],
|
|
29
|
+
'0': ['-O0'],
|
|
30
|
+
'g': ['-g'],
|
|
31
|
+
'1': ['-O1'],
|
|
32
|
+
'2': [], # Compiler defaults to -O2
|
|
33
|
+
'3': ['-O3', '-Otime'],
|
|
34
|
+
's': ['-O3'], # Compiler defaults to -Ospace
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
armclang_optimization_args: T.Dict[str, T.List[str]] = {
|
|
38
|
+
'plain': [],
|
|
39
|
+
'0': [], # Compiler defaults to -O0
|
|
40
|
+
'g': ['-g'],
|
|
41
|
+
'1': ['-O1'],
|
|
42
|
+
'2': ['-O2'],
|
|
43
|
+
'3': ['-O3'],
|
|
44
|
+
's': ['-Oz']
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class ArmCompiler(Compiler):
|
|
49
|
+
|
|
50
|
+
"""Functionality that is common to all ARM family compilers."""
|
|
51
|
+
|
|
52
|
+
id = 'arm'
|
|
53
|
+
|
|
54
|
+
def __init__(self) -> None:
|
|
55
|
+
if not self.is_cross:
|
|
56
|
+
raise mesonlib.EnvironmentException('armcc supports only cross-compilation.')
|
|
57
|
+
default_warn_args: T.List[str] = []
|
|
58
|
+
self.warn_args = {'0': [],
|
|
59
|
+
'1': default_warn_args,
|
|
60
|
+
'2': default_warn_args + [],
|
|
61
|
+
'3': default_warn_args + [],
|
|
62
|
+
'everything': default_warn_args + []}
|
|
63
|
+
# Assembly
|
|
64
|
+
self.can_compile_suffixes.add('s')
|
|
65
|
+
self.can_compile_suffixes.add('sx')
|
|
66
|
+
|
|
67
|
+
def get_pic_args(self) -> T.List[str]:
|
|
68
|
+
# FIXME: Add /ropi, /rwpi, /fpic etc. qualifiers to --apcs
|
|
69
|
+
return []
|
|
70
|
+
|
|
71
|
+
# Override CCompiler.get_always_args
|
|
72
|
+
def get_always_args(self) -> T.List[str]:
|
|
73
|
+
return []
|
|
74
|
+
|
|
75
|
+
def get_dependency_gen_args(self, outtarget: str, outfile: str) -> T.List[str]:
|
|
76
|
+
return ['--depend_target', outtarget, '--depend', outfile, '--depend_single_line']
|
|
77
|
+
|
|
78
|
+
def get_pch_use_args(self, pch_dir: str, header: str) -> T.List[str]:
|
|
79
|
+
# FIXME: Add required arguments
|
|
80
|
+
# NOTE from armcc user guide:
|
|
81
|
+
# "Support for Precompiled Header (PCH) files is deprecated from ARM Compiler 5.05
|
|
82
|
+
# onwards on all platforms. Note that ARM Compiler on Windows 8 never supported
|
|
83
|
+
# PCH files."
|
|
84
|
+
return []
|
|
85
|
+
|
|
86
|
+
def get_pch_suffix(self) -> str:
|
|
87
|
+
# NOTE from armcc user guide:
|
|
88
|
+
# "Support for Precompiled Header (PCH) files is deprecated from ARM Compiler 5.05
|
|
89
|
+
# onwards on all platforms. Note that ARM Compiler on Windows 8 never supported
|
|
90
|
+
# PCH files."
|
|
91
|
+
return 'pch'
|
|
92
|
+
|
|
93
|
+
def thread_flags(self, env: 'Environment') -> T.List[str]:
|
|
94
|
+
return []
|
|
95
|
+
|
|
96
|
+
def get_coverage_args(self) -> T.List[str]:
|
|
97
|
+
return []
|
|
98
|
+
|
|
99
|
+
def get_optimization_args(self, optimization_level: str) -> T.List[str]:
|
|
100
|
+
return arm_optimization_args[optimization_level]
|
|
101
|
+
|
|
102
|
+
def get_debug_args(self, is_debug: bool) -> T.List[str]:
|
|
103
|
+
return clike_debug_args[is_debug]
|
|
104
|
+
|
|
105
|
+
def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str], build_dir: str) -> T.List[str]:
|
|
106
|
+
for idx, i in enumerate(parameter_list):
|
|
107
|
+
if i[:2] == '-I' or i[:2] == '-L':
|
|
108
|
+
parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:]))
|
|
109
|
+
|
|
110
|
+
return parameter_list
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
class ArmclangCompiler(Compiler):
|
|
114
|
+
'''
|
|
115
|
+
This is the Keil armclang.
|
|
116
|
+
'''
|
|
117
|
+
|
|
118
|
+
id = 'armclang'
|
|
119
|
+
|
|
120
|
+
def __init__(self) -> None:
|
|
121
|
+
if not self.is_cross:
|
|
122
|
+
raise mesonlib.EnvironmentException('armclang supports only cross-compilation.')
|
|
123
|
+
# Check whether 'armlink' is available in path
|
|
124
|
+
if not isinstance(self.linker, ArmClangDynamicLinker):
|
|
125
|
+
raise mesonlib.EnvironmentException(f'Unsupported Linker {self.linker.exelist}, must be armlink')
|
|
126
|
+
if not mesonlib.version_compare(self.version, '==' + self.linker.version):
|
|
127
|
+
raise mesonlib.EnvironmentException('armlink version does not match with compiler version')
|
|
128
|
+
self.base_options = {
|
|
129
|
+
OptionKey(o) for o in
|
|
130
|
+
['b_pch', 'b_lto', 'b_pgo', 'b_sanitize', 'b_coverage',
|
|
131
|
+
'b_ndebug', 'b_staticpic', 'b_colorout']}
|
|
132
|
+
# Assembly
|
|
133
|
+
self.can_compile_suffixes.add('s')
|
|
134
|
+
self.can_compile_suffixes.add('sx')
|
|
135
|
+
|
|
136
|
+
def get_pic_args(self) -> T.List[str]:
|
|
137
|
+
# PIC support is not enabled by default for ARM,
|
|
138
|
+
# if users want to use it, they need to add the required arguments explicitly
|
|
139
|
+
return []
|
|
140
|
+
|
|
141
|
+
def get_colorout_args(self, colortype: str) -> T.List[str]:
|
|
142
|
+
return clang_color_args[colortype][:]
|
|
143
|
+
|
|
144
|
+
def get_pch_suffix(self) -> str:
|
|
145
|
+
return 'gch'
|
|
146
|
+
|
|
147
|
+
def get_pch_use_args(self, pch_dir: str, header: str) -> T.List[str]:
|
|
148
|
+
# Workaround for Clang bug http://llvm.org/bugs/show_bug.cgi?id=15136
|
|
149
|
+
# This flag is internal to Clang (or at least not documented on the man page)
|
|
150
|
+
# so it might change semantics at any time.
|
|
151
|
+
return ['-include-pch', os.path.join(pch_dir, self.get_pch_name(header))]
|
|
152
|
+
|
|
153
|
+
def get_dependency_gen_args(self, outtarget: str, outfile: str) -> T.List[str]:
|
|
154
|
+
return ['-MD', '-MT', outtarget, '-MF', outfile]
|
|
155
|
+
|
|
156
|
+
def get_optimization_args(self, optimization_level: str) -> T.List[str]:
|
|
157
|
+
return armclang_optimization_args[optimization_level]
|
|
158
|
+
|
|
159
|
+
def get_debug_args(self, is_debug: bool) -> T.List[str]:
|
|
160
|
+
return clike_debug_args[is_debug]
|
|
161
|
+
|
|
162
|
+
def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str], build_dir: str) -> T.List[str]:
|
|
163
|
+
for idx, i in enumerate(parameter_list):
|
|
164
|
+
if i[:2] == '-I' or i[:2] == '-L':
|
|
165
|
+
parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:]))
|
|
166
|
+
|
|
167
|
+
return parameter_list
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2012-2019 The Meson development team
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
"""Representations specific to the Renesas CC-RX compiler family."""
|
|
7
|
+
|
|
8
|
+
import os
|
|
9
|
+
import typing as T
|
|
10
|
+
|
|
11
|
+
from ...mesonlib import EnvironmentException
|
|
12
|
+
|
|
13
|
+
if T.TYPE_CHECKING:
|
|
14
|
+
from ...envconfig import MachineInfo
|
|
15
|
+
from ...environment import Environment
|
|
16
|
+
from ...compilers.compilers import Compiler
|
|
17
|
+
else:
|
|
18
|
+
# This is a bit clever, for mypy we pretend that these mixins descend from
|
|
19
|
+
# Compiler, so we get all of the methods and attributes defined for us, but
|
|
20
|
+
# for runtime we make them descend from object (which all classes normally
|
|
21
|
+
# do). This gives up DRYer type checking, with no runtime impact
|
|
22
|
+
Compiler = object
|
|
23
|
+
|
|
24
|
+
ccrx_optimization_args: T.Dict[str, T.List[str]] = {
|
|
25
|
+
'0': ['-optimize=0'],
|
|
26
|
+
'g': ['-optimize=0'],
|
|
27
|
+
'1': ['-optimize=1'],
|
|
28
|
+
'2': ['-optimize=2'],
|
|
29
|
+
'3': ['-optimize=max'],
|
|
30
|
+
's': ['-optimize=2', '-size']
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
ccrx_debug_args: T.Dict[bool, T.List[str]] = {
|
|
34
|
+
False: [],
|
|
35
|
+
True: ['-debug']
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class CcrxCompiler(Compiler):
|
|
40
|
+
|
|
41
|
+
if T.TYPE_CHECKING:
|
|
42
|
+
is_cross = True
|
|
43
|
+
can_compile_suffixes: T.Set[str] = set()
|
|
44
|
+
|
|
45
|
+
id = 'ccrx'
|
|
46
|
+
|
|
47
|
+
def __init__(self) -> None:
|
|
48
|
+
if not self.is_cross:
|
|
49
|
+
raise EnvironmentException('ccrx supports only cross-compilation.')
|
|
50
|
+
# Assembly
|
|
51
|
+
self.can_compile_suffixes.add('src')
|
|
52
|
+
default_warn_args: T.List[str] = []
|
|
53
|
+
self.warn_args: T.Dict[str, T.List[str]] = {
|
|
54
|
+
'0': [],
|
|
55
|
+
'1': default_warn_args,
|
|
56
|
+
'2': default_warn_args + [],
|
|
57
|
+
'3': default_warn_args + [],
|
|
58
|
+
'everything': default_warn_args + []}
|
|
59
|
+
|
|
60
|
+
def get_pic_args(self) -> T.List[str]:
|
|
61
|
+
# PIC support is not enabled by default for CCRX,
|
|
62
|
+
# if users want to use it, they need to add the required arguments explicitly
|
|
63
|
+
return []
|
|
64
|
+
|
|
65
|
+
def get_pch_suffix(self) -> str:
|
|
66
|
+
return 'pch'
|
|
67
|
+
|
|
68
|
+
def get_pch_use_args(self, pch_dir: str, header: str) -> T.List[str]:
|
|
69
|
+
return []
|
|
70
|
+
|
|
71
|
+
def thread_flags(self, env: 'Environment') -> T.List[str]:
|
|
72
|
+
return []
|
|
73
|
+
|
|
74
|
+
def get_coverage_args(self) -> T.List[str]:
|
|
75
|
+
return []
|
|
76
|
+
|
|
77
|
+
def get_no_stdinc_args(self) -> T.List[str]:
|
|
78
|
+
return []
|
|
79
|
+
|
|
80
|
+
def get_no_stdlib_link_args(self) -> T.List[str]:
|
|
81
|
+
return []
|
|
82
|
+
|
|
83
|
+
def get_optimization_args(self, optimization_level: str) -> T.List[str]:
|
|
84
|
+
return ccrx_optimization_args[optimization_level]
|
|
85
|
+
|
|
86
|
+
def get_debug_args(self, is_debug: bool) -> T.List[str]:
|
|
87
|
+
return ccrx_debug_args[is_debug]
|
|
88
|
+
|
|
89
|
+
@classmethod
|
|
90
|
+
def _unix_args_to_native(cls, args: T.List[str], info: MachineInfo) -> T.List[str]:
|
|
91
|
+
result: T.List[str] = []
|
|
92
|
+
for i in args:
|
|
93
|
+
if i.startswith('-D'):
|
|
94
|
+
i = '-define=' + i[2:]
|
|
95
|
+
if i.startswith('-I'):
|
|
96
|
+
i = '-include=' + i[2:]
|
|
97
|
+
if i.startswith('-Wl,-rpath='):
|
|
98
|
+
continue
|
|
99
|
+
elif i == '--print-search-dirs':
|
|
100
|
+
continue
|
|
101
|
+
elif i.startswith('-L'):
|
|
102
|
+
continue
|
|
103
|
+
elif not i.startswith('-lib=') and i.endswith(('.a', '.lib')):
|
|
104
|
+
i = '-lib=' + i
|
|
105
|
+
result.append(i)
|
|
106
|
+
return result
|
|
107
|
+
|
|
108
|
+
def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str], build_dir: str) -> T.List[str]:
|
|
109
|
+
for idx, i in enumerate(parameter_list):
|
|
110
|
+
if i[:9] == '-include=':
|
|
111
|
+
parameter_list[idx] = i[:9] + os.path.normpath(os.path.join(build_dir, i[9:]))
|
|
112
|
+
|
|
113
|
+
return parameter_list
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2019-2022 The meson development team
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
"""Abstractions for the LLVM/Clang compiler family."""
|
|
7
|
+
|
|
8
|
+
import os
|
|
9
|
+
import shutil
|
|
10
|
+
import typing as T
|
|
11
|
+
|
|
12
|
+
from ... import mesonlib
|
|
13
|
+
from ...linkers.linkers import AppleDynamicLinker, ClangClDynamicLinker, LLVMDynamicLinker, GnuGoldDynamicLinker, \
|
|
14
|
+
MoldDynamicLinker
|
|
15
|
+
from ...mesonlib import OptionKey
|
|
16
|
+
from ..compilers import CompileCheckMode
|
|
17
|
+
from .gnu import GnuLikeCompiler
|
|
18
|
+
|
|
19
|
+
if T.TYPE_CHECKING:
|
|
20
|
+
from ...environment import Environment
|
|
21
|
+
from ...dependencies import Dependency # noqa: F401
|
|
22
|
+
|
|
23
|
+
clang_color_args: T.Dict[str, T.List[str]] = {
|
|
24
|
+
'auto': ['-fdiagnostics-color=auto'],
|
|
25
|
+
'always': ['-fdiagnostics-color=always'],
|
|
26
|
+
'never': ['-fdiagnostics-color=never'],
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
clang_optimization_args: T.Dict[str, T.List[str]] = {
|
|
30
|
+
'plain': [],
|
|
31
|
+
'0': ['-O0'],
|
|
32
|
+
'g': ['-Og'],
|
|
33
|
+
'1': ['-O1'],
|
|
34
|
+
'2': ['-O2'],
|
|
35
|
+
'3': ['-O3'],
|
|
36
|
+
's': ['-Oz'],
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
class ClangCompiler(GnuLikeCompiler):
|
|
40
|
+
|
|
41
|
+
id = 'clang'
|
|
42
|
+
|
|
43
|
+
def __init__(self, defines: T.Optional[T.Dict[str, str]]):
|
|
44
|
+
super().__init__()
|
|
45
|
+
self.defines = defines or {}
|
|
46
|
+
self.base_options.update(
|
|
47
|
+
{OptionKey('b_colorout'), OptionKey('b_lto_threads'), OptionKey('b_lto_mode'), OptionKey('b_thinlto_cache'),
|
|
48
|
+
OptionKey('b_thinlto_cache_dir')})
|
|
49
|
+
|
|
50
|
+
# TODO: this really should be part of the linker base_options, but
|
|
51
|
+
# linkers don't have base_options.
|
|
52
|
+
if isinstance(self.linker, AppleDynamicLinker):
|
|
53
|
+
self.base_options.add(OptionKey('b_bitcode'))
|
|
54
|
+
# All Clang backends can also do LLVM IR
|
|
55
|
+
self.can_compile_suffixes.add('ll')
|
|
56
|
+
|
|
57
|
+
def get_colorout_args(self, colortype: str) -> T.List[str]:
|
|
58
|
+
return clang_color_args[colortype][:]
|
|
59
|
+
|
|
60
|
+
def has_builtin_define(self, define: str) -> bool:
|
|
61
|
+
return define in self.defines
|
|
62
|
+
|
|
63
|
+
def get_builtin_define(self, define: str) -> T.Optional[str]:
|
|
64
|
+
return self.defines.get(define)
|
|
65
|
+
|
|
66
|
+
def get_optimization_args(self, optimization_level: str) -> T.List[str]:
|
|
67
|
+
return clang_optimization_args[optimization_level]
|
|
68
|
+
|
|
69
|
+
def get_pch_suffix(self) -> str:
|
|
70
|
+
return 'pch'
|
|
71
|
+
|
|
72
|
+
def get_pch_use_args(self, pch_dir: str, header: str) -> T.List[str]:
|
|
73
|
+
# Workaround for Clang bug http://llvm.org/bugs/show_bug.cgi?id=15136
|
|
74
|
+
# This flag is internal to Clang (or at least not documented on the man page)
|
|
75
|
+
# so it might change semantics at any time.
|
|
76
|
+
return ['-include-pch', os.path.join(pch_dir, self.get_pch_name(header))]
|
|
77
|
+
|
|
78
|
+
def get_compiler_check_args(self, mode: CompileCheckMode) -> T.List[str]:
|
|
79
|
+
# Clang is different than GCC, it will return True when a symbol isn't
|
|
80
|
+
# defined in a header. Specifically this seems to have something to do
|
|
81
|
+
# with functions that may be in a header on some systems, but not all of
|
|
82
|
+
# them. `strlcat` specifically with can trigger this.
|
|
83
|
+
myargs: T.List[str] = ['-Werror=implicit-function-declaration']
|
|
84
|
+
if mode is CompileCheckMode.COMPILE:
|
|
85
|
+
myargs.extend(['-Werror=unknown-warning-option', '-Werror=unused-command-line-argument'])
|
|
86
|
+
if mesonlib.version_compare(self.version, '>=3.6.0'):
|
|
87
|
+
myargs.append('-Werror=ignored-optimization-argument')
|
|
88
|
+
return super().get_compiler_check_args(mode) + myargs
|
|
89
|
+
|
|
90
|
+
def has_function(self, funcname: str, prefix: str, env: 'Environment', *,
|
|
91
|
+
extra_args: T.Optional[T.List[str]] = None,
|
|
92
|
+
dependencies: T.Optional[T.List['Dependency']] = None) -> T.Tuple[bool, bool]:
|
|
93
|
+
if extra_args is None:
|
|
94
|
+
extra_args = []
|
|
95
|
+
# Starting with XCode 8, we need to pass this to force linker
|
|
96
|
+
# visibility to obey OS X/iOS/tvOS minimum version targets with
|
|
97
|
+
# -mmacosx-version-min, -miphoneos-version-min, -mtvos-version-min etc.
|
|
98
|
+
# https://github.com/Homebrew/homebrew-core/issues/3727
|
|
99
|
+
# TODO: this really should be communicated by the linker
|
|
100
|
+
if isinstance(self.linker, AppleDynamicLinker) and mesonlib.version_compare(self.version, '>=8.0'):
|
|
101
|
+
extra_args.append('-Wl,-no_weak_imports')
|
|
102
|
+
return super().has_function(funcname, prefix, env, extra_args=extra_args,
|
|
103
|
+
dependencies=dependencies)
|
|
104
|
+
|
|
105
|
+
def openmp_flags(self) -> T.List[str]:
|
|
106
|
+
if mesonlib.version_compare(self.version, '>=3.8.0'):
|
|
107
|
+
return ['-fopenmp']
|
|
108
|
+
elif mesonlib.version_compare(self.version, '>=3.7.0'):
|
|
109
|
+
return ['-fopenmp=libomp']
|
|
110
|
+
else:
|
|
111
|
+
# Shouldn't work, but it'll be checked explicitly in the OpenMP dependency.
|
|
112
|
+
return []
|
|
113
|
+
|
|
114
|
+
@classmethod
|
|
115
|
+
def use_linker_args(cls, linker: str, version: str) -> T.List[str]:
|
|
116
|
+
# Clang additionally can use a linker specified as a path, which GCC
|
|
117
|
+
# (and other gcc-like compilers) cannot. This is because clang (being
|
|
118
|
+
# llvm based) is retargetable, while GCC is not.
|
|
119
|
+
#
|
|
120
|
+
|
|
121
|
+
# qcld: Qualcomm Snapdragon linker, based on LLVM
|
|
122
|
+
if linker == 'qcld':
|
|
123
|
+
return ['-fuse-ld=qcld']
|
|
124
|
+
if linker == 'mold':
|
|
125
|
+
return ['-fuse-ld=mold']
|
|
126
|
+
|
|
127
|
+
if shutil.which(linker):
|
|
128
|
+
if not shutil.which(linker):
|
|
129
|
+
raise mesonlib.MesonException(
|
|
130
|
+
f'Cannot find linker {linker}.')
|
|
131
|
+
return [f'-fuse-ld={linker}']
|
|
132
|
+
return super().use_linker_args(linker, version)
|
|
133
|
+
|
|
134
|
+
def get_has_func_attribute_extra_args(self, name: str) -> T.List[str]:
|
|
135
|
+
# Clang only warns about unknown or ignored attributes, so force an
|
|
136
|
+
# error.
|
|
137
|
+
return ['-Werror=attributes']
|
|
138
|
+
|
|
139
|
+
def get_coverage_link_args(self) -> T.List[str]:
|
|
140
|
+
return ['--coverage']
|
|
141
|
+
|
|
142
|
+
def get_lto_compile_args(self, *, threads: int = 0, mode: str = 'default') -> T.List[str]:
|
|
143
|
+
args: T.List[str] = []
|
|
144
|
+
if mode == 'thin':
|
|
145
|
+
# ThinLTO requires the use of gold, lld, ld64, lld-link or mold 1.1+
|
|
146
|
+
if isinstance(self.linker, (MoldDynamicLinker)):
|
|
147
|
+
# https://github.com/rui314/mold/commit/46995bcfc3e3113133620bf16445c5f13cd76a18
|
|
148
|
+
if not mesonlib.version_compare(self.linker.version, '>=1.1'):
|
|
149
|
+
raise mesonlib.MesonException("LLVM's ThinLTO requires mold 1.1+")
|
|
150
|
+
elif not isinstance(self.linker, (AppleDynamicLinker, ClangClDynamicLinker, LLVMDynamicLinker, GnuGoldDynamicLinker)):
|
|
151
|
+
raise mesonlib.MesonException(f"LLVM's ThinLTO only works with gold, lld, lld-link, ld64 or mold, not {self.linker.id}")
|
|
152
|
+
args.append(f'-flto={mode}')
|
|
153
|
+
else:
|
|
154
|
+
assert mode == 'default', 'someone forgot to wire something up'
|
|
155
|
+
args.extend(super().get_lto_compile_args(threads=threads))
|
|
156
|
+
return args
|
|
157
|
+
|
|
158
|
+
def get_lto_link_args(self, *, threads: int = 0, mode: str = 'default',
|
|
159
|
+
thinlto_cache_dir: T.Optional[str] = None) -> T.List[str]:
|
|
160
|
+
args = self.get_lto_compile_args(threads=threads, mode=mode)
|
|
161
|
+
if mode == 'thin' and thinlto_cache_dir is not None:
|
|
162
|
+
# We check for ThinLTO linker support above in get_lto_compile_args, and all of them support
|
|
163
|
+
# get_thinlto_cache_args as well
|
|
164
|
+
args.extend(self.linker.get_thinlto_cache_args(thinlto_cache_dir))
|
|
165
|
+
# In clang -flto-jobs=0 means auto, and is the default if unspecified, just like in meson
|
|
166
|
+
if threads > 0:
|
|
167
|
+
if not mesonlib.version_compare(self.version, '>=4.0.0'):
|
|
168
|
+
raise mesonlib.MesonException('clang support for LTO threads requires clang >=4.0')
|
|
169
|
+
args.append(f'-flto-jobs={threads}')
|
|
170
|
+
return args
|