frida 16.2.1 → 16.2.2
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,130 @@
|
|
|
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 Texas Instruments 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
|
+
ti_optimization_args: T.Dict[str, T.List[str]] = {
|
|
25
|
+
'plain': [],
|
|
26
|
+
'0': ['-O0'],
|
|
27
|
+
'g': ['-Ooff'],
|
|
28
|
+
'1': ['-O1'],
|
|
29
|
+
'2': ['-O2'],
|
|
30
|
+
'3': ['-O3'],
|
|
31
|
+
's': ['-O4']
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
ti_debug_args: T.Dict[bool, T.List[str]] = {
|
|
35
|
+
False: [],
|
|
36
|
+
True: ['-g']
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class TICompiler(Compiler):
|
|
41
|
+
|
|
42
|
+
id = 'ti'
|
|
43
|
+
|
|
44
|
+
def __init__(self) -> None:
|
|
45
|
+
if not self.is_cross:
|
|
46
|
+
raise EnvironmentException('TI compilers only support cross-compilation.')
|
|
47
|
+
|
|
48
|
+
self.can_compile_suffixes.add('asm') # Assembly
|
|
49
|
+
self.can_compile_suffixes.add('cla') # Control Law Accelerator (CLA) used in C2000
|
|
50
|
+
|
|
51
|
+
default_warn_args: T.List[str] = []
|
|
52
|
+
self.warn_args: T.Dict[str, T.List[str]] = {
|
|
53
|
+
'0': [],
|
|
54
|
+
'1': default_warn_args,
|
|
55
|
+
'2': default_warn_args + [],
|
|
56
|
+
'3': default_warn_args + [],
|
|
57
|
+
'everything': default_warn_args + []}
|
|
58
|
+
|
|
59
|
+
def get_pic_args(self) -> T.List[str]:
|
|
60
|
+
# PIC support is not enabled by default for TI compilers,
|
|
61
|
+
# if users want to use it, they need to add the required arguments explicitly
|
|
62
|
+
return []
|
|
63
|
+
|
|
64
|
+
def get_pch_suffix(self) -> str:
|
|
65
|
+
return 'pch'
|
|
66
|
+
|
|
67
|
+
def get_pch_use_args(self, pch_dir: str, header: str) -> T.List[str]:
|
|
68
|
+
return []
|
|
69
|
+
|
|
70
|
+
def thread_flags(self, env: 'Environment') -> T.List[str]:
|
|
71
|
+
return []
|
|
72
|
+
|
|
73
|
+
def get_coverage_args(self) -> T.List[str]:
|
|
74
|
+
return []
|
|
75
|
+
|
|
76
|
+
def get_no_stdinc_args(self) -> T.List[str]:
|
|
77
|
+
return []
|
|
78
|
+
|
|
79
|
+
def get_no_stdlib_link_args(self) -> T.List[str]:
|
|
80
|
+
return []
|
|
81
|
+
|
|
82
|
+
def get_optimization_args(self, optimization_level: str) -> T.List[str]:
|
|
83
|
+
return ti_optimization_args[optimization_level]
|
|
84
|
+
|
|
85
|
+
def get_debug_args(self, is_debug: bool) -> T.List[str]:
|
|
86
|
+
return ti_debug_args[is_debug]
|
|
87
|
+
|
|
88
|
+
def get_compile_only_args(self) -> T.List[str]:
|
|
89
|
+
return []
|
|
90
|
+
|
|
91
|
+
def get_no_optimization_args(self) -> T.List[str]:
|
|
92
|
+
return ['-Ooff']
|
|
93
|
+
|
|
94
|
+
def get_output_args(self, outputname: str) -> T.List[str]:
|
|
95
|
+
return [f'--output_file={outputname}']
|
|
96
|
+
|
|
97
|
+
def get_werror_args(self) -> T.List[str]:
|
|
98
|
+
return ['--emit_warnings_as_errors']
|
|
99
|
+
|
|
100
|
+
def get_include_args(self, path: str, is_system: bool) -> T.List[str]:
|
|
101
|
+
if path == '':
|
|
102
|
+
path = '.'
|
|
103
|
+
return ['-I=' + path]
|
|
104
|
+
|
|
105
|
+
@classmethod
|
|
106
|
+
def _unix_args_to_native(cls, args: T.List[str], info: MachineInfo) -> T.List[str]:
|
|
107
|
+
result: T.List[str] = []
|
|
108
|
+
for i in args:
|
|
109
|
+
if i.startswith('-D'):
|
|
110
|
+
i = '--define=' + i[2:]
|
|
111
|
+
if i.startswith('-Wl,-rpath='):
|
|
112
|
+
continue
|
|
113
|
+
elif i == '--print-search-dirs':
|
|
114
|
+
continue
|
|
115
|
+
elif i.startswith('-L'):
|
|
116
|
+
continue
|
|
117
|
+
result.append(i)
|
|
118
|
+
return result
|
|
119
|
+
|
|
120
|
+
def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str], build_dir: str) -> T.List[str]:
|
|
121
|
+
for idx, i in enumerate(parameter_list):
|
|
122
|
+
if i[:15] == '--include_path=':
|
|
123
|
+
parameter_list[idx] = i[:15] + os.path.normpath(os.path.join(build_dir, i[15:]))
|
|
124
|
+
if i[:2] == '-I':
|
|
125
|
+
parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:]))
|
|
126
|
+
|
|
127
|
+
return parameter_list
|
|
128
|
+
|
|
129
|
+
def get_dependency_gen_args(self, outtarget: str, outfile: str) -> T.List[str]:
|
|
130
|
+
return ['--preproc_with_compile', f'--preproc_dependency={outfile}']
|
|
@@ -0,0 +1,458 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2019 The meson development team
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
"""Abstractions to simplify compilers that implement an MSVC compatible
|
|
7
|
+
interface.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import abc
|
|
11
|
+
import os
|
|
12
|
+
import typing as T
|
|
13
|
+
|
|
14
|
+
from ... import arglist
|
|
15
|
+
from ... import mesonlib
|
|
16
|
+
from ... import mlog
|
|
17
|
+
from mesonbuild.compilers.compilers import CompileCheckMode
|
|
18
|
+
|
|
19
|
+
if T.TYPE_CHECKING:
|
|
20
|
+
from ...environment import Environment
|
|
21
|
+
from ...dependencies import Dependency
|
|
22
|
+
from .clike import CLikeCompiler as Compiler
|
|
23
|
+
else:
|
|
24
|
+
# This is a bit clever, for mypy we pretend that these mixins descend from
|
|
25
|
+
# Compiler, so we get all of the methods and attributes defined for us, but
|
|
26
|
+
# for runtime we make them descend from object (which all classes normally
|
|
27
|
+
# do). This gives up DRYer type checking, with no runtime impact
|
|
28
|
+
Compiler = object
|
|
29
|
+
|
|
30
|
+
vs32_instruction_set_args: T.Dict[str, T.Optional[T.List[str]]] = {
|
|
31
|
+
'mmx': ['/arch:SSE'], # There does not seem to be a flag just for MMX
|
|
32
|
+
'sse': ['/arch:SSE'],
|
|
33
|
+
'sse2': ['/arch:SSE2'],
|
|
34
|
+
'sse3': ['/arch:AVX'], # VS leaped from SSE2 directly to AVX.
|
|
35
|
+
'sse41': ['/arch:AVX'],
|
|
36
|
+
'sse42': ['/arch:AVX'],
|
|
37
|
+
'avx': ['/arch:AVX'],
|
|
38
|
+
'avx2': ['/arch:AVX2'],
|
|
39
|
+
'neon': None,
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
# The 64 bit compiler defaults to /arch:avx.
|
|
43
|
+
vs64_instruction_set_args: T.Dict[str, T.Optional[T.List[str]]] = {
|
|
44
|
+
'mmx': ['/arch:AVX'],
|
|
45
|
+
'sse': ['/arch:AVX'],
|
|
46
|
+
'sse2': ['/arch:AVX'],
|
|
47
|
+
'sse3': ['/arch:AVX'],
|
|
48
|
+
'ssse3': ['/arch:AVX'],
|
|
49
|
+
'sse41': ['/arch:AVX'],
|
|
50
|
+
'sse42': ['/arch:AVX'],
|
|
51
|
+
'avx': ['/arch:AVX'],
|
|
52
|
+
'avx2': ['/arch:AVX2'],
|
|
53
|
+
'neon': None,
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
msvc_optimization_args: T.Dict[str, T.List[str]] = {
|
|
57
|
+
'plain': [],
|
|
58
|
+
'0': ['/Od'],
|
|
59
|
+
'g': [], # No specific flag to optimize debugging, /Zi or /ZI will create debug information
|
|
60
|
+
'1': ['/O1'],
|
|
61
|
+
'2': ['/O2'],
|
|
62
|
+
'3': ['/O2', '/Gw'],
|
|
63
|
+
's': ['/O1', '/Gw'],
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
msvc_debug_args: T.Dict[bool, T.List[str]] = {
|
|
67
|
+
False: [],
|
|
68
|
+
True: ['/Z7']
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class VisualStudioLikeCompiler(Compiler, metaclass=abc.ABCMeta):
|
|
73
|
+
|
|
74
|
+
"""A common interface for all compilers implementing an MSVC-style
|
|
75
|
+
interface.
|
|
76
|
+
|
|
77
|
+
A number of compilers attempt to mimic MSVC, with varying levels of
|
|
78
|
+
success, such as Clang-CL and ICL (the Intel C/C++ Compiler for Windows).
|
|
79
|
+
This class implements as much common logic as possible.
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
std_warn_args = ['/W3']
|
|
83
|
+
std_opt_args = ['/O2']
|
|
84
|
+
ignore_libs = arglist.UNIXY_COMPILER_INTERNAL_LIBS + ['execinfo']
|
|
85
|
+
internal_libs: T.List[str] = []
|
|
86
|
+
|
|
87
|
+
crt_args: T.Dict[str, T.List[str]] = {
|
|
88
|
+
'none': [],
|
|
89
|
+
'md': ['/MD'],
|
|
90
|
+
'mdd': ['/MDd'],
|
|
91
|
+
'mt': ['/MT'],
|
|
92
|
+
'mtd': ['/MTd'],
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
# /showIncludes is needed for build dependency tracking in Ninja
|
|
96
|
+
# See: https://ninja-build.org/manual.html#_deps
|
|
97
|
+
# Assume UTF-8 sources by default, but self.unix_args_to_native() removes it
|
|
98
|
+
# if `/source-charset` is set too.
|
|
99
|
+
# It is also dropped if Visual Studio 2013 or earlier is used, since it would
|
|
100
|
+
# not be supported in that case.
|
|
101
|
+
always_args = ['/nologo', '/showIncludes', '/utf-8']
|
|
102
|
+
warn_args: T.Dict[str, T.List[str]] = {
|
|
103
|
+
'0': [],
|
|
104
|
+
'1': ['/W2'],
|
|
105
|
+
'2': ['/W3'],
|
|
106
|
+
'3': ['/W4'],
|
|
107
|
+
'everything': ['/Wall'],
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
INVOKES_LINKER = False
|
|
111
|
+
|
|
112
|
+
def __init__(self, target: str):
|
|
113
|
+
self.base_options = {mesonlib.OptionKey(o) for o in ['b_pch', 'b_ndebug', 'b_vscrt']} # FIXME add lto, pgo and the like
|
|
114
|
+
self.target = target
|
|
115
|
+
self.is_64 = ('x64' in target) or ('x86_64' in target)
|
|
116
|
+
# do some canonicalization of target machine
|
|
117
|
+
if 'x86_64' in target:
|
|
118
|
+
self.machine = 'x64'
|
|
119
|
+
elif '86' in target:
|
|
120
|
+
self.machine = 'x86'
|
|
121
|
+
elif 'aarch64' in target:
|
|
122
|
+
self.machine = 'arm64'
|
|
123
|
+
elif 'arm' in target:
|
|
124
|
+
self.machine = 'arm'
|
|
125
|
+
else:
|
|
126
|
+
self.machine = target
|
|
127
|
+
if mesonlib.version_compare(self.version, '>=19.28.29910'): # VS 16.9.0 includes cl 19.28.29910
|
|
128
|
+
self.base_options.add(mesonlib.OptionKey('b_sanitize'))
|
|
129
|
+
assert self.linker is not None
|
|
130
|
+
self.linker.machine = self.machine
|
|
131
|
+
|
|
132
|
+
# Override CCompiler.get_always_args
|
|
133
|
+
def get_always_args(self) -> T.List[str]:
|
|
134
|
+
# TODO: use ImmutableListProtocol[str] here instead
|
|
135
|
+
return self.always_args.copy()
|
|
136
|
+
|
|
137
|
+
def get_pch_suffix(self) -> str:
|
|
138
|
+
return 'pch'
|
|
139
|
+
|
|
140
|
+
def get_pch_name(self, name: str) -> str:
|
|
141
|
+
chopped = os.path.basename(name).split('.')[:-1]
|
|
142
|
+
chopped.append(self.get_pch_suffix())
|
|
143
|
+
pchname = '.'.join(chopped)
|
|
144
|
+
return pchname
|
|
145
|
+
|
|
146
|
+
def get_pch_base_name(self, header: str) -> str:
|
|
147
|
+
# This needs to be implemented by inheriting classes
|
|
148
|
+
raise NotImplementedError
|
|
149
|
+
|
|
150
|
+
def get_pch_use_args(self, pch_dir: str, header: str) -> T.List[str]:
|
|
151
|
+
base = self.get_pch_base_name(header)
|
|
152
|
+
pchname = self.get_pch_name(header)
|
|
153
|
+
return ['/FI' + base, '/Yu' + base, '/Fp' + os.path.join(pch_dir, pchname)]
|
|
154
|
+
|
|
155
|
+
def get_preprocess_only_args(self) -> T.List[str]:
|
|
156
|
+
return ['/EP']
|
|
157
|
+
|
|
158
|
+
def get_preprocess_to_file_args(self) -> T.List[str]:
|
|
159
|
+
return ['/EP', '/P']
|
|
160
|
+
|
|
161
|
+
def get_compile_only_args(self) -> T.List[str]:
|
|
162
|
+
return ['/c']
|
|
163
|
+
|
|
164
|
+
def get_no_optimization_args(self) -> T.List[str]:
|
|
165
|
+
return ['/Od', '/Oi-']
|
|
166
|
+
|
|
167
|
+
def sanitizer_compile_args(self, value: str) -> T.List[str]:
|
|
168
|
+
if value == 'none':
|
|
169
|
+
return []
|
|
170
|
+
if value != 'address':
|
|
171
|
+
raise mesonlib.MesonException('VS only supports address sanitizer at the moment.')
|
|
172
|
+
return ['/fsanitize=address']
|
|
173
|
+
|
|
174
|
+
def get_output_args(self, outputname: str) -> T.List[str]:
|
|
175
|
+
if self.mode == 'PREPROCESSOR':
|
|
176
|
+
return ['/Fi' + outputname]
|
|
177
|
+
if outputname.endswith('.exe'):
|
|
178
|
+
return ['/Fe' + outputname]
|
|
179
|
+
return ['/Fo' + outputname]
|
|
180
|
+
|
|
181
|
+
def get_debug_args(self, is_debug: bool) -> T.List[str]:
|
|
182
|
+
return msvc_debug_args[is_debug]
|
|
183
|
+
|
|
184
|
+
def get_optimization_args(self, optimization_level: str) -> T.List[str]:
|
|
185
|
+
args = msvc_optimization_args[optimization_level]
|
|
186
|
+
if mesonlib.version_compare(self.version, '<18.0'):
|
|
187
|
+
args = [arg for arg in args if arg != '/Gw']
|
|
188
|
+
return args
|
|
189
|
+
|
|
190
|
+
def linker_to_compiler_args(self, args: T.List[str]) -> T.List[str]:
|
|
191
|
+
return ['/link'] + args
|
|
192
|
+
|
|
193
|
+
def get_pic_args(self) -> T.List[str]:
|
|
194
|
+
return [] # PIC is handled by the loader on Windows
|
|
195
|
+
|
|
196
|
+
def gen_vs_module_defs_args(self, defsfile: str) -> T.List[str]:
|
|
197
|
+
if not isinstance(defsfile, str):
|
|
198
|
+
raise RuntimeError('Module definitions file should be str')
|
|
199
|
+
# With MSVC, DLLs only export symbols that are explicitly exported,
|
|
200
|
+
# so if a module defs file is specified, we use that to export symbols
|
|
201
|
+
return ['/DEF:' + defsfile]
|
|
202
|
+
|
|
203
|
+
def gen_pch_args(self, header: str, source: str, pchname: str) -> T.Tuple[str, T.List[str]]:
|
|
204
|
+
objname = os.path.splitext(source)[0] + '.obj'
|
|
205
|
+
return objname, ['/Yc' + header, '/Fp' + pchname, '/Fo' + objname]
|
|
206
|
+
|
|
207
|
+
def openmp_flags(self) -> T.List[str]:
|
|
208
|
+
return ['/openmp']
|
|
209
|
+
|
|
210
|
+
def openmp_link_flags(self) -> T.List[str]:
|
|
211
|
+
return []
|
|
212
|
+
|
|
213
|
+
# FIXME, no idea what these should be.
|
|
214
|
+
def thread_flags(self, env: 'Environment') -> T.List[str]:
|
|
215
|
+
return []
|
|
216
|
+
|
|
217
|
+
@classmethod
|
|
218
|
+
def unix_args_to_native(cls, args: T.List[str]) -> T.List[str]:
|
|
219
|
+
result: T.List[str] = []
|
|
220
|
+
for i in args:
|
|
221
|
+
# -mms-bitfields is specific to MinGW-GCC
|
|
222
|
+
# -pthread is only valid for GCC
|
|
223
|
+
if i in {'-mms-bitfields', '-pthread'}:
|
|
224
|
+
continue
|
|
225
|
+
if i.startswith('-LIBPATH:'):
|
|
226
|
+
i = '/LIBPATH:' + i[9:]
|
|
227
|
+
elif i.startswith('-L'):
|
|
228
|
+
i = '/LIBPATH:' + i[2:]
|
|
229
|
+
# Translate GNU-style -lfoo library name to the import library
|
|
230
|
+
elif i.startswith('-l'):
|
|
231
|
+
name = i[2:]
|
|
232
|
+
if name in cls.ignore_libs:
|
|
233
|
+
# With MSVC, these are provided by the C runtime which is
|
|
234
|
+
# linked in by default
|
|
235
|
+
continue
|
|
236
|
+
else:
|
|
237
|
+
i = name + '.lib'
|
|
238
|
+
elif i.startswith('-isystem'):
|
|
239
|
+
# just use /I for -isystem system include path s
|
|
240
|
+
if i.startswith('-isystem='):
|
|
241
|
+
i = '/I' + i[9:]
|
|
242
|
+
else:
|
|
243
|
+
i = '/I' + i[8:]
|
|
244
|
+
elif i.startswith('-idirafter'):
|
|
245
|
+
# same as -isystem, but appends the path instead
|
|
246
|
+
if i.startswith('-idirafter='):
|
|
247
|
+
i = '/I' + i[11:]
|
|
248
|
+
else:
|
|
249
|
+
i = '/I' + i[10:]
|
|
250
|
+
# -pthread in link flags is only used on Linux
|
|
251
|
+
elif i == '-pthread':
|
|
252
|
+
continue
|
|
253
|
+
# cl.exe does not allow specifying both, so remove /utf-8 that we
|
|
254
|
+
# added automatically in the case the user overrides it manually.
|
|
255
|
+
elif (i.startswith('/source-charset:')
|
|
256
|
+
or i.startswith('/execution-charset:')
|
|
257
|
+
or i == '/validate-charset-'):
|
|
258
|
+
try:
|
|
259
|
+
result.remove('/utf-8')
|
|
260
|
+
except ValueError:
|
|
261
|
+
pass
|
|
262
|
+
result.append(i)
|
|
263
|
+
return result
|
|
264
|
+
|
|
265
|
+
@classmethod
|
|
266
|
+
def native_args_to_unix(cls, args: T.List[str]) -> T.List[str]:
|
|
267
|
+
result: T.List[str] = []
|
|
268
|
+
for arg in args:
|
|
269
|
+
if arg.startswith(('/LIBPATH:', '-LIBPATH:')):
|
|
270
|
+
result.append('-L' + arg[9:])
|
|
271
|
+
elif arg.endswith(('.a', '.lib')) and not os.path.isabs(arg):
|
|
272
|
+
result.append('-l' + arg)
|
|
273
|
+
else:
|
|
274
|
+
result.append(arg)
|
|
275
|
+
return result
|
|
276
|
+
|
|
277
|
+
def get_werror_args(self) -> T.List[str]:
|
|
278
|
+
return ['/WX']
|
|
279
|
+
|
|
280
|
+
def get_include_args(self, path: str, is_system: bool) -> T.List[str]:
|
|
281
|
+
if path == '':
|
|
282
|
+
path = '.'
|
|
283
|
+
# msvc does not have a concept of system header dirs.
|
|
284
|
+
return ['-I' + path]
|
|
285
|
+
|
|
286
|
+
def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str], build_dir: str) -> T.List[str]:
|
|
287
|
+
for idx, i in enumerate(parameter_list):
|
|
288
|
+
if i[:2] == '-I' or i[:2] == '/I':
|
|
289
|
+
parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:]))
|
|
290
|
+
elif i[:9] == '/LIBPATH:':
|
|
291
|
+
parameter_list[idx] = i[:9] + os.path.normpath(os.path.join(build_dir, i[9:]))
|
|
292
|
+
|
|
293
|
+
return parameter_list
|
|
294
|
+
|
|
295
|
+
# Visual Studio is special. It ignores some arguments it does not
|
|
296
|
+
# understand and you can't tell it to error out on those.
|
|
297
|
+
# http://stackoverflow.com/questions/15259720/how-can-i-make-the-microsoft-c-compiler-treat-unknown-flags-as-errors-rather-t
|
|
298
|
+
def has_arguments(self, args: T.List[str], env: 'Environment', code: str, mode: CompileCheckMode) -> T.Tuple[bool, bool]:
|
|
299
|
+
warning_text = '4044' if mode == CompileCheckMode.LINK else '9002'
|
|
300
|
+
with self._build_wrapper(code, env, extra_args=args, mode=mode) as p:
|
|
301
|
+
if p.returncode != 0:
|
|
302
|
+
return False, p.cached
|
|
303
|
+
return not (warning_text in p.stderr or warning_text in p.stdout), p.cached
|
|
304
|
+
|
|
305
|
+
def get_compile_debugfile_args(self, rel_obj: str, pch: bool = False) -> T.List[str]:
|
|
306
|
+
return []
|
|
307
|
+
|
|
308
|
+
def get_instruction_set_args(self, instruction_set: str) -> T.Optional[T.List[str]]:
|
|
309
|
+
if self.is_64:
|
|
310
|
+
return vs64_instruction_set_args.get(instruction_set, None)
|
|
311
|
+
return vs32_instruction_set_args.get(instruction_set, None)
|
|
312
|
+
|
|
313
|
+
def _calculate_toolset_version(self, version: int) -> T.Optional[str]:
|
|
314
|
+
if version < 1310:
|
|
315
|
+
return '7.0'
|
|
316
|
+
elif version < 1400:
|
|
317
|
+
return '7.1' # (Visual Studio 2003)
|
|
318
|
+
elif version < 1500:
|
|
319
|
+
return '8.0' # (Visual Studio 2005)
|
|
320
|
+
elif version < 1600:
|
|
321
|
+
return '9.0' # (Visual Studio 2008)
|
|
322
|
+
elif version < 1700:
|
|
323
|
+
return '10.0' # (Visual Studio 2010)
|
|
324
|
+
elif version < 1800:
|
|
325
|
+
return '11.0' # (Visual Studio 2012)
|
|
326
|
+
elif version < 1900:
|
|
327
|
+
return '12.0' # (Visual Studio 2013)
|
|
328
|
+
elif version < 1910:
|
|
329
|
+
return '14.0' # (Visual Studio 2015)
|
|
330
|
+
elif version < 1920:
|
|
331
|
+
return '14.1' # (Visual Studio 2017)
|
|
332
|
+
elif version < 1930:
|
|
333
|
+
return '14.2' # (Visual Studio 2019)
|
|
334
|
+
elif version < 1940:
|
|
335
|
+
return '14.3' # (Visual Studio 2022)
|
|
336
|
+
mlog.warning(f'Could not find toolset for version {self.version!r}')
|
|
337
|
+
return None
|
|
338
|
+
|
|
339
|
+
def get_toolset_version(self) -> T.Optional[str]:
|
|
340
|
+
# See boost/config/compiler/visualc.cpp for up to date mapping
|
|
341
|
+
try:
|
|
342
|
+
version = int(''.join(self.version.split('.')[0:2]))
|
|
343
|
+
except ValueError:
|
|
344
|
+
return None
|
|
345
|
+
return self._calculate_toolset_version(version)
|
|
346
|
+
|
|
347
|
+
def get_default_include_dirs(self) -> T.List[str]:
|
|
348
|
+
if 'INCLUDE' not in os.environ:
|
|
349
|
+
return []
|
|
350
|
+
return os.environ['INCLUDE'].split(os.pathsep)
|
|
351
|
+
|
|
352
|
+
def get_crt_compile_args(self, crt_val: str, buildtype: str) -> T.List[str]:
|
|
353
|
+
crt_val = self.get_crt_val(crt_val, buildtype)
|
|
354
|
+
return self.crt_args[crt_val]
|
|
355
|
+
|
|
356
|
+
def has_func_attribute(self, name: str, env: 'Environment') -> T.Tuple[bool, bool]:
|
|
357
|
+
# MSVC doesn't have __attribute__ like Clang and GCC do, so just return
|
|
358
|
+
# false without compiling anything
|
|
359
|
+
return name in {'dllimport', 'dllexport'}, False
|
|
360
|
+
|
|
361
|
+
def get_argument_syntax(self) -> str:
|
|
362
|
+
return 'msvc'
|
|
363
|
+
|
|
364
|
+
def symbols_have_underscore_prefix(self, env: 'Environment') -> bool:
|
|
365
|
+
'''
|
|
366
|
+
Check if the compiler prefixes an underscore to global C symbols.
|
|
367
|
+
|
|
368
|
+
This overrides the Clike method, as for MSVC checking the
|
|
369
|
+
underscore prefix based on the compiler define never works,
|
|
370
|
+
so do not even try.
|
|
371
|
+
'''
|
|
372
|
+
# Try to consult a hardcoded list of cases we know
|
|
373
|
+
# absolutely have an underscore prefix
|
|
374
|
+
result = self._symbols_have_underscore_prefix_list(env)
|
|
375
|
+
if result is not None:
|
|
376
|
+
return result
|
|
377
|
+
|
|
378
|
+
# As a last resort, try search in a compiled binary
|
|
379
|
+
return self._symbols_have_underscore_prefix_searchbin(env)
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
class MSVCCompiler(VisualStudioLikeCompiler):
|
|
383
|
+
|
|
384
|
+
"""Specific to the Microsoft Compilers."""
|
|
385
|
+
|
|
386
|
+
id = 'msvc'
|
|
387
|
+
|
|
388
|
+
def __init__(self, target: str):
|
|
389
|
+
super().__init__(target)
|
|
390
|
+
|
|
391
|
+
# Visual Studio 2013 and earlier don't support the /utf-8 argument.
|
|
392
|
+
# We want to remove it. We also want to make an explicit copy so we
|
|
393
|
+
# don't mutate class constant state
|
|
394
|
+
if mesonlib.version_compare(self.version, '<19.00') and '/utf-8' in self.always_args:
|
|
395
|
+
self.always_args = [r for r in self.always_args if r != '/utf-8']
|
|
396
|
+
|
|
397
|
+
# Override CCompiler.get_always_args
|
|
398
|
+
# We want to drop '/utf-8' for Visual Studio 2013 and earlier
|
|
399
|
+
def get_always_args(self) -> T.List[str]:
|
|
400
|
+
return self.always_args
|
|
401
|
+
|
|
402
|
+
def get_instruction_set_args(self, instruction_set: str) -> T.Optional[T.List[str]]:
|
|
403
|
+
if self.version.split('.')[0] == '16' and instruction_set == 'avx':
|
|
404
|
+
# VS documentation says that this exists and should work, but
|
|
405
|
+
# it does not. The headers do not contain AVX intrinsics
|
|
406
|
+
# and they cannot be called.
|
|
407
|
+
return None
|
|
408
|
+
return super().get_instruction_set_args(instruction_set)
|
|
409
|
+
|
|
410
|
+
def get_pch_base_name(self, header: str) -> str:
|
|
411
|
+
return os.path.basename(header)
|
|
412
|
+
|
|
413
|
+
# MSVC requires linking to the generated object file when linking a build target
|
|
414
|
+
# that uses a precompiled header
|
|
415
|
+
def should_link_pch_object(self) -> bool:
|
|
416
|
+
return True
|
|
417
|
+
|
|
418
|
+
class ClangClCompiler(VisualStudioLikeCompiler):
|
|
419
|
+
|
|
420
|
+
"""Specific to Clang-CL."""
|
|
421
|
+
|
|
422
|
+
id = 'clang-cl'
|
|
423
|
+
|
|
424
|
+
def __init__(self, target: str):
|
|
425
|
+
super().__init__(target)
|
|
426
|
+
|
|
427
|
+
# Assembly
|
|
428
|
+
self.can_compile_suffixes.add('s')
|
|
429
|
+
self.can_compile_suffixes.add('sx')
|
|
430
|
+
|
|
431
|
+
def has_arguments(self, args: T.List[str], env: 'Environment', code: str, mode: CompileCheckMode) -> T.Tuple[bool, bool]:
|
|
432
|
+
if mode != CompileCheckMode.LINK:
|
|
433
|
+
args = args + ['-Werror=unknown-argument', '-Werror=unknown-warning-option']
|
|
434
|
+
return super().has_arguments(args, env, code, mode)
|
|
435
|
+
|
|
436
|
+
def get_toolset_version(self) -> T.Optional[str]:
|
|
437
|
+
# XXX: what is the right thing to do here?
|
|
438
|
+
return '14.1'
|
|
439
|
+
|
|
440
|
+
def get_pch_base_name(self, header: str) -> str:
|
|
441
|
+
return header
|
|
442
|
+
|
|
443
|
+
def get_include_args(self, path: str, is_system: bool) -> T.List[str]:
|
|
444
|
+
if path == '':
|
|
445
|
+
path = '.'
|
|
446
|
+
return ['/clang:-isystem' + path] if is_system else ['-I' + path]
|
|
447
|
+
|
|
448
|
+
def get_dependency_compile_args(self, dep: 'Dependency') -> T.List[str]:
|
|
449
|
+
if dep.get_include_type() == 'system':
|
|
450
|
+
converted: T.List[str] = []
|
|
451
|
+
for i in dep.get_compile_args():
|
|
452
|
+
if i.startswith('-isystem'):
|
|
453
|
+
converted += ['/clang:' + i]
|
|
454
|
+
else:
|
|
455
|
+
converted += [i]
|
|
456
|
+
return converted
|
|
457
|
+
else:
|
|
458
|
+
return dep.get_compile_args()
|
|
@@ -0,0 +1,111 @@
|
|
|
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 Microchip XC16 C 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
|
+
xc16_optimization_args: T.Dict[str, T.List[str]] = {
|
|
25
|
+
'plain': [],
|
|
26
|
+
'0': ['-O0'],
|
|
27
|
+
'g': ['-O0'],
|
|
28
|
+
'1': ['-O1'],
|
|
29
|
+
'2': ['-O2'],
|
|
30
|
+
'3': ['-O3'],
|
|
31
|
+
's': ['-Os']
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
xc16_debug_args: T.Dict[bool, T.List[str]] = {
|
|
35
|
+
False: [],
|
|
36
|
+
True: []
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class Xc16Compiler(Compiler):
|
|
41
|
+
|
|
42
|
+
id = 'xc16'
|
|
43
|
+
|
|
44
|
+
def __init__(self) -> None:
|
|
45
|
+
if not self.is_cross:
|
|
46
|
+
raise EnvironmentException('xc16 supports only cross-compilation.')
|
|
47
|
+
# Assembly
|
|
48
|
+
self.can_compile_suffixes.add('s')
|
|
49
|
+
self.can_compile_suffixes.add('sx')
|
|
50
|
+
default_warn_args: T.List[str] = []
|
|
51
|
+
self.warn_args = {'0': [],
|
|
52
|
+
'1': default_warn_args,
|
|
53
|
+
'2': default_warn_args + [],
|
|
54
|
+
'3': default_warn_args + [],
|
|
55
|
+
'everything': default_warn_args + []}
|
|
56
|
+
|
|
57
|
+
def get_always_args(self) -> T.List[str]:
|
|
58
|
+
return []
|
|
59
|
+
|
|
60
|
+
def get_pic_args(self) -> T.List[str]:
|
|
61
|
+
# PIC support is not enabled by default for xc16,
|
|
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 ['-nostdinc']
|
|
79
|
+
|
|
80
|
+
def get_no_stdlib_link_args(self) -> T.List[str]:
|
|
81
|
+
return ['--nostdlib']
|
|
82
|
+
|
|
83
|
+
def get_optimization_args(self, optimization_level: str) -> T.List[str]:
|
|
84
|
+
return xc16_optimization_args[optimization_level]
|
|
85
|
+
|
|
86
|
+
def get_debug_args(self, is_debug: bool) -> T.List[str]:
|
|
87
|
+
return xc16_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 = []
|
|
92
|
+
for i in args:
|
|
93
|
+
if i.startswith('-D'):
|
|
94
|
+
i = '-D' + i[2:]
|
|
95
|
+
if i.startswith('-I'):
|
|
96
|
+
i = '-I' + 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
|
+
result.append(i)
|
|
104
|
+
return result
|
|
105
|
+
|
|
106
|
+
def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str], build_dir: str) -> T.List[str]:
|
|
107
|
+
for idx, i in enumerate(parameter_list):
|
|
108
|
+
if i[:9] == '-I':
|
|
109
|
+
parameter_list[idx] = i[:9] + os.path.normpath(os.path.join(build_dir, i[9:]))
|
|
110
|
+
|
|
111
|
+
return parameter_list
|