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 2019 The meson development team
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
"""Abstractions for the Intel Compiler families.
|
|
7
|
+
|
|
8
|
+
Intel provides both a posix/gcc-like compiler (ICC) for MacOS and Linux,
|
|
9
|
+
with Meson mixin IntelGnuLikeCompiler.
|
|
10
|
+
For Windows, the Intel msvc-like compiler (ICL) Meson mixin
|
|
11
|
+
is IntelVisualStudioLikeCompiler.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import os
|
|
15
|
+
import typing as T
|
|
16
|
+
|
|
17
|
+
from ... import mesonlib
|
|
18
|
+
from ..compilers import CompileCheckMode
|
|
19
|
+
from .gnu import GnuLikeCompiler
|
|
20
|
+
from .visualstudio import VisualStudioLikeCompiler
|
|
21
|
+
|
|
22
|
+
# XXX: avoid circular dependencies
|
|
23
|
+
# TODO: this belongs in a posix compiler class
|
|
24
|
+
# NOTE: the default Intel optimization is -O2, unlike GNU which defaults to -O0.
|
|
25
|
+
# this can be surprising, particularly for debug builds, so we specify the
|
|
26
|
+
# default as -O0.
|
|
27
|
+
# https://software.intel.com/en-us/cpp-compiler-developer-guide-and-reference-o
|
|
28
|
+
# https://software.intel.com/en-us/cpp-compiler-developer-guide-and-reference-g
|
|
29
|
+
# https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-o
|
|
30
|
+
# https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-g
|
|
31
|
+
# https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-traceback
|
|
32
|
+
# https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class IntelGnuLikeCompiler(GnuLikeCompiler):
|
|
36
|
+
"""
|
|
37
|
+
Tested on linux for ICC 14.0.3, 15.0.6, 16.0.4, 17.0.1, 19.0
|
|
38
|
+
debugoptimized: -g -O2
|
|
39
|
+
release: -O3
|
|
40
|
+
minsize: -O2
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
DEBUG_ARGS: T.Dict[bool, T.List[str]] = {
|
|
44
|
+
False: [],
|
|
45
|
+
True: ['-g', '-traceback']
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
OPTIM_ARGS: T.Dict[str, T.List[str]] = {
|
|
49
|
+
'plain': [],
|
|
50
|
+
'0': ['-O0'],
|
|
51
|
+
'g': ['-O0'],
|
|
52
|
+
'1': ['-O1'],
|
|
53
|
+
'2': ['-O2'],
|
|
54
|
+
'3': ['-O3'],
|
|
55
|
+
's': ['-Os'],
|
|
56
|
+
}
|
|
57
|
+
id = 'intel'
|
|
58
|
+
|
|
59
|
+
def __init__(self) -> None:
|
|
60
|
+
super().__init__()
|
|
61
|
+
# As of 19.0.0 ICC doesn't have sanitizer, color, or lto support.
|
|
62
|
+
#
|
|
63
|
+
# It does have IPO, which serves much the same purpose as LOT, but
|
|
64
|
+
# there is an unfortunate rule for using IPO (you can't control the
|
|
65
|
+
# name of the output file) which break assumptions meson makes
|
|
66
|
+
self.base_options = {mesonlib.OptionKey(o) for o in [
|
|
67
|
+
'b_pch', 'b_lundef', 'b_asneeded', 'b_pgo', 'b_coverage',
|
|
68
|
+
'b_ndebug', 'b_staticpic', 'b_pie']}
|
|
69
|
+
self.lang_header = 'none'
|
|
70
|
+
|
|
71
|
+
def get_pch_suffix(self) -> str:
|
|
72
|
+
return 'pchi'
|
|
73
|
+
|
|
74
|
+
def get_pch_use_args(self, pch_dir: str, header: str) -> T.List[str]:
|
|
75
|
+
return ['-pch', '-pch_dir', os.path.join(pch_dir), '-x',
|
|
76
|
+
self.lang_header, '-include', header, '-x', 'none']
|
|
77
|
+
|
|
78
|
+
def get_pch_name(self, name: str) -> str:
|
|
79
|
+
return os.path.basename(name) + '.' + self.get_pch_suffix()
|
|
80
|
+
|
|
81
|
+
def openmp_flags(self) -> T.List[str]:
|
|
82
|
+
if mesonlib.version_compare(self.version, '>=15.0.0'):
|
|
83
|
+
return ['-qopenmp']
|
|
84
|
+
else:
|
|
85
|
+
return ['-openmp']
|
|
86
|
+
|
|
87
|
+
def get_compiler_check_args(self, mode: CompileCheckMode) -> T.List[str]:
|
|
88
|
+
extra_args = [
|
|
89
|
+
'-diag-error', '10006', # ignoring unknown option
|
|
90
|
+
'-diag-error', '10148', # Option not supported
|
|
91
|
+
'-diag-error', '10155', # ignoring argument required
|
|
92
|
+
'-diag-error', '10156', # ignoring not argument allowed
|
|
93
|
+
'-diag-error', '10157', # Ignoring argument of the wrong type
|
|
94
|
+
'-diag-error', '10158', # Argument must be separate. Can be hit by trying an option like -foo-bar=foo when -foo=bar is a valid option but -foo-bar isn't
|
|
95
|
+
]
|
|
96
|
+
return super().get_compiler_check_args(mode) + extra_args
|
|
97
|
+
|
|
98
|
+
def get_profile_generate_args(self) -> T.List[str]:
|
|
99
|
+
return ['-prof-gen=threadsafe']
|
|
100
|
+
|
|
101
|
+
def get_profile_use_args(self) -> T.List[str]:
|
|
102
|
+
return ['-prof-use']
|
|
103
|
+
|
|
104
|
+
def get_debug_args(self, is_debug: bool) -> T.List[str]:
|
|
105
|
+
return self.DEBUG_ARGS[is_debug]
|
|
106
|
+
|
|
107
|
+
def get_optimization_args(self, optimization_level: str) -> T.List[str]:
|
|
108
|
+
return self.OPTIM_ARGS[optimization_level]
|
|
109
|
+
|
|
110
|
+
def get_has_func_attribute_extra_args(self, name: str) -> T.List[str]:
|
|
111
|
+
return ['-diag-error', '1292']
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class IntelVisualStudioLikeCompiler(VisualStudioLikeCompiler):
|
|
115
|
+
|
|
116
|
+
"""Abstractions for ICL, the Intel compiler on Windows."""
|
|
117
|
+
|
|
118
|
+
DEBUG_ARGS: T.Dict[bool, T.List[str]] = {
|
|
119
|
+
False: [],
|
|
120
|
+
True: ['/Zi', '/traceback']
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
OPTIM_ARGS: T.Dict[str, T.List[str]] = {
|
|
124
|
+
'plain': [],
|
|
125
|
+
'0': ['/Od'],
|
|
126
|
+
'g': ['/Od'],
|
|
127
|
+
'1': ['/O1'],
|
|
128
|
+
'2': ['/O2'],
|
|
129
|
+
'3': ['/O3'],
|
|
130
|
+
's': ['/Os'],
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
id = 'intel-cl'
|
|
134
|
+
|
|
135
|
+
def get_compiler_check_args(self, mode: CompileCheckMode) -> T.List[str]:
|
|
136
|
+
args = super().get_compiler_check_args(mode)
|
|
137
|
+
if mode is not CompileCheckMode.LINK:
|
|
138
|
+
args.extend([
|
|
139
|
+
'/Qdiag-error:10006', # ignoring unknown option
|
|
140
|
+
'/Qdiag-error:10148', # Option not supported
|
|
141
|
+
'/Qdiag-error:10155', # ignoring argument required
|
|
142
|
+
'/Qdiag-error:10156', # ignoring not argument allowed
|
|
143
|
+
'/Qdiag-error:10157', # Ignoring argument of the wrong type
|
|
144
|
+
'/Qdiag-error:10158', # Argument must be separate. Can be hit by trying an option like -foo-bar=foo when -foo=bar is a valid option but -foo-bar isn't
|
|
145
|
+
])
|
|
146
|
+
return args
|
|
147
|
+
|
|
148
|
+
def get_toolset_version(self) -> T.Optional[str]:
|
|
149
|
+
# ICL provides a cl.exe that returns the version of MSVC it tries to
|
|
150
|
+
# emulate, so we'll get the version from that and pass it to the same
|
|
151
|
+
# function the real MSVC uses to calculate the toolset version.
|
|
152
|
+
_, _, err = mesonlib.Popen_safe(['cl.exe'])
|
|
153
|
+
v1, v2, *_ = mesonlib.search_version(err).split('.')
|
|
154
|
+
version = int(v1 + v2)
|
|
155
|
+
return self._calculate_toolset_version(version)
|
|
156
|
+
|
|
157
|
+
def openmp_flags(self) -> T.List[str]:
|
|
158
|
+
return ['/Qopenmp']
|
|
159
|
+
|
|
160
|
+
def get_debug_args(self, is_debug: bool) -> T.List[str]:
|
|
161
|
+
return self.DEBUG_ARGS[is_debug]
|
|
162
|
+
|
|
163
|
+
def get_optimization_args(self, optimization_level: str) -> T.List[str]:
|
|
164
|
+
return self.OPTIM_ARGS[optimization_level]
|
|
165
|
+
|
|
166
|
+
def get_pch_base_name(self, header: str) -> str:
|
|
167
|
+
return os.path.basename(header)
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2019 The Meson development team
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
"""Mixins for compilers that *are* linkers.
|
|
7
|
+
|
|
8
|
+
While many compilers (such as gcc and clang) are used by meson to dispatch
|
|
9
|
+
linker commands and other (like MSVC) are not, a few (such as DMD) actually
|
|
10
|
+
are both the linker and compiler in one binary. This module provides mixin
|
|
11
|
+
classes for those cases.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import typing as T
|
|
15
|
+
|
|
16
|
+
from ...mesonlib import EnvironmentException, MesonException, is_windows
|
|
17
|
+
|
|
18
|
+
if T.TYPE_CHECKING:
|
|
19
|
+
from ...coredata import KeyedOptionDictType
|
|
20
|
+
from ...environment import Environment
|
|
21
|
+
from ...compilers.compilers import Compiler
|
|
22
|
+
else:
|
|
23
|
+
# This is a bit clever, for mypy we pretend that these mixins descend from
|
|
24
|
+
# Compiler, so we get all of the methods and attributes defined for us, but
|
|
25
|
+
# for runtime we make them descend from object (which all classes normally
|
|
26
|
+
# do). This gives up DRYer type checking, with no runtime impact
|
|
27
|
+
Compiler = object
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class BasicLinkerIsCompilerMixin(Compiler):
|
|
31
|
+
|
|
32
|
+
"""Provides a baseline of methods that a linker would implement.
|
|
33
|
+
|
|
34
|
+
In every case this provides a "no" or "empty" answer. If a compiler
|
|
35
|
+
implements any of these it needs a different mixin or to override that
|
|
36
|
+
functionality itself.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
def sanitizer_link_args(self, value: str) -> T.List[str]:
|
|
40
|
+
return []
|
|
41
|
+
|
|
42
|
+
def get_lto_link_args(self, *, threads: int = 0, mode: str = 'default',
|
|
43
|
+
thinlto_cache_dir: T.Optional[str] = None) -> T.List[str]:
|
|
44
|
+
return []
|
|
45
|
+
|
|
46
|
+
def can_linker_accept_rsp(self) -> bool:
|
|
47
|
+
return is_windows()
|
|
48
|
+
|
|
49
|
+
def get_linker_exelist(self) -> T.List[str]:
|
|
50
|
+
return self.exelist.copy()
|
|
51
|
+
|
|
52
|
+
def get_linker_output_args(self, outputname: str) -> T.List[str]:
|
|
53
|
+
return []
|
|
54
|
+
|
|
55
|
+
def get_linker_always_args(self) -> T.List[str]:
|
|
56
|
+
return []
|
|
57
|
+
|
|
58
|
+
def get_linker_lib_prefix(self) -> str:
|
|
59
|
+
return ''
|
|
60
|
+
|
|
61
|
+
def get_option_link_args(self, options: 'KeyedOptionDictType') -> T.List[str]:
|
|
62
|
+
return []
|
|
63
|
+
|
|
64
|
+
def has_multi_link_args(self, args: T.List[str], env: 'Environment') -> T.Tuple[bool, bool]:
|
|
65
|
+
return False, False
|
|
66
|
+
|
|
67
|
+
def get_link_debugfile_args(self, targetfile: str) -> T.List[str]:
|
|
68
|
+
return []
|
|
69
|
+
|
|
70
|
+
def get_std_shared_lib_link_args(self) -> T.List[str]:
|
|
71
|
+
return []
|
|
72
|
+
|
|
73
|
+
def get_std_shared_module_args(self, options: 'KeyedOptionDictType') -> T.List[str]:
|
|
74
|
+
return self.get_std_shared_lib_link_args()
|
|
75
|
+
|
|
76
|
+
def get_link_whole_for(self, args: T.List[str]) -> T.List[str]:
|
|
77
|
+
raise EnvironmentException(f'Linker {self.id} does not support link_whole')
|
|
78
|
+
|
|
79
|
+
def get_allow_undefined_link_args(self) -> T.List[str]:
|
|
80
|
+
raise EnvironmentException(f'Linker {self.id} does not support allow undefined')
|
|
81
|
+
|
|
82
|
+
def get_pie_link_args(self) -> T.List[str]:
|
|
83
|
+
raise EnvironmentException(f'Linker {self.id} does not support position-independent executable')
|
|
84
|
+
|
|
85
|
+
def get_undefined_link_args(self) -> T.List[str]:
|
|
86
|
+
return []
|
|
87
|
+
|
|
88
|
+
def get_coverage_link_args(self) -> T.List[str]:
|
|
89
|
+
return []
|
|
90
|
+
|
|
91
|
+
def no_undefined_link_args(self) -> T.List[str]:
|
|
92
|
+
return []
|
|
93
|
+
|
|
94
|
+
def bitcode_args(self) -> T.List[str]:
|
|
95
|
+
raise MesonException("This linker doesn't support bitcode bundles")
|
|
96
|
+
|
|
97
|
+
def get_soname_args(self, env: 'Environment', prefix: str, shlib_name: str,
|
|
98
|
+
suffix: str, soversion: str,
|
|
99
|
+
darwin_versions: T.Tuple[str, str]) -> T.List[str]:
|
|
100
|
+
raise MesonException("This linker doesn't support soname args")
|
|
101
|
+
|
|
102
|
+
def build_rpath_args(self, env: 'Environment', build_dir: str, from_dir: str,
|
|
103
|
+
rpath_paths: T.Tuple[str, ...], build_rpath: str,
|
|
104
|
+
install_rpath: str) -> T.Tuple[T.List[str], T.Set[bytes]]:
|
|
105
|
+
return ([], set())
|
|
106
|
+
|
|
107
|
+
def get_asneeded_args(self) -> T.List[str]:
|
|
108
|
+
return []
|
|
109
|
+
|
|
110
|
+
def get_optimization_link_args(self, optimization_level: str) -> T.List[str]:
|
|
111
|
+
return []
|
|
112
|
+
|
|
113
|
+
def get_link_debugfile_name(self, targetfile: str) -> T.Optional[str]:
|
|
114
|
+
return None
|
|
115
|
+
|
|
116
|
+
def thread_flags(self, env: 'Environment') -> T.List[str]:
|
|
117
|
+
return []
|
|
118
|
+
|
|
119
|
+
def thread_link_flags(self, env: 'Environment') -> T.List[str]:
|
|
120
|
+
return []
|
|
@@ -0,0 +1,279 @@
|
|
|
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 Metrowerks/Freescale Embedded C/C++ compiler family."""
|
|
7
|
+
|
|
8
|
+
import os
|
|
9
|
+
import typing as T
|
|
10
|
+
|
|
11
|
+
from ...mesonlib import EnvironmentException, OptionKey
|
|
12
|
+
|
|
13
|
+
if T.TYPE_CHECKING:
|
|
14
|
+
from ...envconfig import MachineInfo
|
|
15
|
+
from ...compilers.compilers import Compiler, CompileCheckMode
|
|
16
|
+
else:
|
|
17
|
+
# This is a bit clever, for mypy we pretend that these mixins descend from
|
|
18
|
+
# Compiler, so we get all of the methods and attributes defined for us, but
|
|
19
|
+
# for runtime we make them descend from object (which all classes normally
|
|
20
|
+
# do). This gives up DRYer type checking, with no runtime impact
|
|
21
|
+
Compiler = object
|
|
22
|
+
|
|
23
|
+
mwccarm_instruction_set_args: T.Dict[str, T.List[str]] = {
|
|
24
|
+
'generic': ['-proc', 'generic'],
|
|
25
|
+
'v4': ['-proc', 'v4'],
|
|
26
|
+
'v4t': ['-proc', 'v4t'],
|
|
27
|
+
'v5t': ['-proc', 'v5t'],
|
|
28
|
+
'v5te': ['-proc', 'v5te'],
|
|
29
|
+
'v6': ['-proc', 'v6'],
|
|
30
|
+
'arm7tdmi': ['-proc', 'arm7tdmi'],
|
|
31
|
+
'arm710t': ['-proc', 'arm710t'],
|
|
32
|
+
'arm720t': ['-proc', 'arm720t'],
|
|
33
|
+
'arm740t': ['-proc', 'arm740t'],
|
|
34
|
+
'arm7ej': ['-proc', 'arm7ej'],
|
|
35
|
+
'arm9tdmi': ['-proc', 'arm9tdmi'],
|
|
36
|
+
'arm920t': ['-proc', 'arm920t'],
|
|
37
|
+
'arm922t': ['-proc', 'arm922t'],
|
|
38
|
+
'arm940t': ['-proc', 'arm940t'],
|
|
39
|
+
'arm9ej': ['-proc', 'arm9ej'],
|
|
40
|
+
'arm926ej': ['-proc', 'arm926ej'],
|
|
41
|
+
'arm946e': ['-proc', 'arm946e'],
|
|
42
|
+
'arm966e': ['-proc', 'arm966e'],
|
|
43
|
+
'arm1020e': ['-proc', 'arm1020e'],
|
|
44
|
+
'arm1022e': ['-proc', 'arm1022e'],
|
|
45
|
+
'arm1026ej': ['-proc', 'arm1026ej'],
|
|
46
|
+
'dbmx1': ['-proc', 'dbmx1'],
|
|
47
|
+
'dbmxl': ['-proc', 'dbmxl'],
|
|
48
|
+
'XScale': ['-proc', 'XScale'],
|
|
49
|
+
'pxa255': ['-proc', 'pxa255'],
|
|
50
|
+
'pxa261': ['-proc', 'pxa261'],
|
|
51
|
+
'pxa262': ['-proc', 'pxa262'],
|
|
52
|
+
'pxa263': ['-proc', 'pxa263']
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
mwcceppc_instruction_set_args: T.Dict[str, T.List[str]] = {
|
|
56
|
+
'generic': ['-proc', 'generic'],
|
|
57
|
+
'401': ['-proc', '401'],
|
|
58
|
+
'403': ['-proc', '403'],
|
|
59
|
+
'505': ['-proc', '505'],
|
|
60
|
+
'509': ['-proc', '509'],
|
|
61
|
+
'555': ['-proc', '555'],
|
|
62
|
+
'601': ['-proc', '601'],
|
|
63
|
+
'602': ['-proc', '602'],
|
|
64
|
+
'603': ['-proc', '603'],
|
|
65
|
+
'603e': ['-proc', '603e'],
|
|
66
|
+
'604': ['-proc', '604'],
|
|
67
|
+
'604e': ['-proc', '604e'],
|
|
68
|
+
'740': ['-proc', '740'],
|
|
69
|
+
'750': ['-proc', '750'],
|
|
70
|
+
'801': ['-proc', '801'],
|
|
71
|
+
'821': ['-proc', '821'],
|
|
72
|
+
'823': ['-proc', '823'],
|
|
73
|
+
'850': ['-proc', '850'],
|
|
74
|
+
'860': ['-proc', '860'],
|
|
75
|
+
'7400': ['-proc', '7400'],
|
|
76
|
+
'7450': ['-proc', '7450'],
|
|
77
|
+
'8240': ['-proc', '8240'],
|
|
78
|
+
'8260': ['-proc', '8260'],
|
|
79
|
+
'e500': ['-proc', 'e500'],
|
|
80
|
+
'gekko': ['-proc', 'gekko'],
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
mwasmarm_instruction_set_args: T.Dict[str, T.List[str]] = {
|
|
84
|
+
'arm4': ['-proc', 'arm4'],
|
|
85
|
+
'arm4t': ['-proc', 'arm4t'],
|
|
86
|
+
'arm4xm': ['-proc', 'arm4xm'],
|
|
87
|
+
'arm4txm': ['-proc', 'arm4txm'],
|
|
88
|
+
'arm5': ['-proc', 'arm5'],
|
|
89
|
+
'arm5T': ['-proc', 'arm5T'],
|
|
90
|
+
'arm5xM': ['-proc', 'arm5xM'],
|
|
91
|
+
'arm5TxM': ['-proc', 'arm5TxM'],
|
|
92
|
+
'arm5TE': ['-proc', 'arm5TE'],
|
|
93
|
+
'arm5TExP': ['-proc', 'arm5TExP'],
|
|
94
|
+
'arm6': ['-proc', 'arm6'],
|
|
95
|
+
'xscale': ['-proc', 'xscale']
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
mwasmeppc_instruction_set_args: T.Dict[str, T.List[str]] = {
|
|
99
|
+
'401': ['-proc', '401'],
|
|
100
|
+
'403': ['-proc', '403'],
|
|
101
|
+
'505': ['-proc', '505'],
|
|
102
|
+
'509': ['-proc', '509'],
|
|
103
|
+
'555': ['-proc', '555'],
|
|
104
|
+
'56X': ['-proc', '56X'],
|
|
105
|
+
'601': ['-proc', '601'],
|
|
106
|
+
'602': ['-proc', '602'],
|
|
107
|
+
'603': ['-proc', '603'],
|
|
108
|
+
'603e': ['-proc', '603e'],
|
|
109
|
+
'604': ['-proc', '604'],
|
|
110
|
+
'604e': ['-proc', '604e'],
|
|
111
|
+
'740': ['-proc', '740'],
|
|
112
|
+
'74X': ['-proc', '74X'],
|
|
113
|
+
'750': ['-proc', '750'],
|
|
114
|
+
'75X': ['-proc', '75X'],
|
|
115
|
+
'801': ['-proc', '801'],
|
|
116
|
+
'821': ['-proc', '821'],
|
|
117
|
+
'823': ['-proc', '823'],
|
|
118
|
+
'850': ['-proc', '850'],
|
|
119
|
+
'85X': ['-proc', '85X'],
|
|
120
|
+
'860': ['-proc', '860'],
|
|
121
|
+
'86X': ['-proc', '86X'],
|
|
122
|
+
'87X': ['-proc', '87X'],
|
|
123
|
+
'88X': ['-proc', '88X'],
|
|
124
|
+
'5100': ['-proc', '5100'],
|
|
125
|
+
'5200': ['-proc', '5200'],
|
|
126
|
+
'7400': ['-proc', '7400'],
|
|
127
|
+
'744X': ['-proc', '744X'],
|
|
128
|
+
'7450': ['-proc', '7450'],
|
|
129
|
+
'745X': ['-proc', '745X'],
|
|
130
|
+
'82XX': ['-proc', '82XX'],
|
|
131
|
+
'8240': ['-proc', '8240'],
|
|
132
|
+
'824X': ['-proc', '824X'],
|
|
133
|
+
'8260': ['-proc', '8260'],
|
|
134
|
+
'827X': ['-proc', '827X'],
|
|
135
|
+
'8280': ['-proc', '8280'],
|
|
136
|
+
'e300': ['-proc', 'e300'],
|
|
137
|
+
'e300c2': ['-proc', 'e300c2'],
|
|
138
|
+
'e300c3': ['-proc', 'e300c3'],
|
|
139
|
+
'e300c4': ['-proc', 'e300c4'],
|
|
140
|
+
'e600': ['-proc', 'e600'],
|
|
141
|
+
'85xx': ['-proc', '85xx'],
|
|
142
|
+
'e500': ['-proc', 'e500'],
|
|
143
|
+
'e500v2': ['-proc', 'e500v2'],
|
|
144
|
+
'Zen': ['-proc', 'Zen'],
|
|
145
|
+
'5565': ['-proc', '5565'],
|
|
146
|
+
'5674': ['-proc', '5674'],
|
|
147
|
+
'gekko': ['-proc', 'gekko'],
|
|
148
|
+
'generic': ['-proc', 'generic'],
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
mwcc_optimization_args: T.Dict[str, T.List[str]] = {
|
|
152
|
+
'plain': [],
|
|
153
|
+
'0': ['-O0'],
|
|
154
|
+
'g': ['-Op'],
|
|
155
|
+
'1': ['-O1'],
|
|
156
|
+
'2': ['-O2'],
|
|
157
|
+
'3': ['-O4,p'],
|
|
158
|
+
's': ['-Os']
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
mwcc_debug_args: T.Dict[bool, T.List[str]] = {
|
|
162
|
+
False: [],
|
|
163
|
+
True: ['-g']
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
class MetrowerksCompiler(Compiler):
|
|
168
|
+
id = 'mwcc'
|
|
169
|
+
|
|
170
|
+
# These compilers can actually invoke the linker, but they choke on
|
|
171
|
+
# linker-specific flags. So it's best to invoke the linker directly
|
|
172
|
+
INVOKES_LINKER = False
|
|
173
|
+
|
|
174
|
+
def __init__(self) -> None:
|
|
175
|
+
if not self.is_cross:
|
|
176
|
+
raise EnvironmentException(f'{id} supports only cross-compilation.')
|
|
177
|
+
|
|
178
|
+
self.base_options = {
|
|
179
|
+
OptionKey(o) for o in ['b_pch', 'b_ndebug']}
|
|
180
|
+
|
|
181
|
+
default_warn_args: T.List[str] = []
|
|
182
|
+
self.warn_args: T.Dict[str, T.List[str]] = {
|
|
183
|
+
'0': ['-w', 'off'],
|
|
184
|
+
'1': default_warn_args,
|
|
185
|
+
'2': default_warn_args + ['-w', 'most'],
|
|
186
|
+
'3': default_warn_args + ['-w', 'all'],
|
|
187
|
+
'everything': default_warn_args + ['-w', 'full']}
|
|
188
|
+
|
|
189
|
+
def depfile_for_object(self, objfile: str) -> T.Optional[str]:
|
|
190
|
+
# Earlier versions of these compilers do not support specifying
|
|
191
|
+
# a custom name for a depfile, and can only generate '<input_file>.d'
|
|
192
|
+
return os.path.splitext(objfile)[0] + '.' + self.get_depfile_suffix()
|
|
193
|
+
|
|
194
|
+
def get_always_args(self) -> T.List[str]:
|
|
195
|
+
return ['-gccinc']
|
|
196
|
+
|
|
197
|
+
def get_compiler_check_args(self, mode: CompileCheckMode) -> T.List[str]:
|
|
198
|
+
return []
|
|
199
|
+
|
|
200
|
+
def get_compile_only_args(self) -> T.List[str]:
|
|
201
|
+
return ['-c']
|
|
202
|
+
|
|
203
|
+
def get_debug_args(self, is_debug: bool) -> T.List[str]:
|
|
204
|
+
return mwcc_debug_args[is_debug]
|
|
205
|
+
|
|
206
|
+
def get_dependency_gen_args(self, outtarget: str, outfile: str) -> T.List[str]:
|
|
207
|
+
# Check comment in depfile_for_object()
|
|
208
|
+
return ['-gccdep', '-MD']
|
|
209
|
+
|
|
210
|
+
def get_depfile_suffix(self) -> str:
|
|
211
|
+
return 'd'
|
|
212
|
+
|
|
213
|
+
def get_include_args(self, path: str, is_system: bool) -> T.List[str]:
|
|
214
|
+
if not path:
|
|
215
|
+
path = '.'
|
|
216
|
+
return ['-I' + path]
|
|
217
|
+
|
|
218
|
+
def get_no_optimization_args(self) -> T.List[str]:
|
|
219
|
+
return ['-opt', 'off']
|
|
220
|
+
|
|
221
|
+
def get_no_stdinc_args(self) -> T.List[str]:
|
|
222
|
+
return ['-nostdinc']
|
|
223
|
+
|
|
224
|
+
def get_no_stdlib_link_args(self) -> T.List[str]:
|
|
225
|
+
return ['-nostdlib']
|
|
226
|
+
|
|
227
|
+
def get_optimization_args(self, optimization_level: str) -> T.List[str]:
|
|
228
|
+
return mwcc_optimization_args[optimization_level]
|
|
229
|
+
|
|
230
|
+
def get_output_args(self, outputname: str) -> T.List[str]:
|
|
231
|
+
return ['-o', outputname]
|
|
232
|
+
|
|
233
|
+
def get_pic_args(self) -> T.List[str]:
|
|
234
|
+
return ['-pic']
|
|
235
|
+
|
|
236
|
+
def get_preprocess_only_args(self) -> T.List[str]:
|
|
237
|
+
return ['-E']
|
|
238
|
+
|
|
239
|
+
def get_preprocess_to_file_args(self) -> T.List[str]:
|
|
240
|
+
return ['-P']
|
|
241
|
+
|
|
242
|
+
def get_pch_use_args(self, pch_dir: str, header: str) -> T.List[str]:
|
|
243
|
+
return ['-prefix', self.get_pch_name(header)]
|
|
244
|
+
|
|
245
|
+
def get_pch_name(self, name: str) -> str:
|
|
246
|
+
return os.path.basename(name) + '.' + self.get_pch_suffix()
|
|
247
|
+
|
|
248
|
+
def get_pch_suffix(self) -> str:
|
|
249
|
+
return 'mch'
|
|
250
|
+
|
|
251
|
+
def get_warn_args(self, level: str) -> T.List[str]:
|
|
252
|
+
return self.warn_args[level]
|
|
253
|
+
|
|
254
|
+
def get_werror_args(self) -> T.List[str]:
|
|
255
|
+
return ['-w', 'error']
|
|
256
|
+
|
|
257
|
+
@classmethod
|
|
258
|
+
def _unix_args_to_native(cls, args: T.List[str], info: MachineInfo) -> T.List[str]:
|
|
259
|
+
result: T.List[str] = []
|
|
260
|
+
for i in args:
|
|
261
|
+
if i.startswith('-D'):
|
|
262
|
+
i = '-D' + i[2:]
|
|
263
|
+
if i.startswith('-I'):
|
|
264
|
+
i = '-I' + i[2:]
|
|
265
|
+
if i.startswith('-Wl,-rpath='):
|
|
266
|
+
continue
|
|
267
|
+
elif i == '--print-search-dirs':
|
|
268
|
+
continue
|
|
269
|
+
elif i.startswith('-L'):
|
|
270
|
+
continue
|
|
271
|
+
result.append(i)
|
|
272
|
+
return result
|
|
273
|
+
|
|
274
|
+
def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str], build_dir: str) -> T.List[str]:
|
|
275
|
+
for idx, i in enumerate(parameter_list):
|
|
276
|
+
if i[:2] == '-I':
|
|
277
|
+
parameter_list[idx] = i[:9] + os.path.normpath(os.path.join(build_dir, i[9:]))
|
|
278
|
+
|
|
279
|
+
return parameter_list
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2019 The meson development team
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
"""Abstractions for the PGI family of compilers."""
|
|
7
|
+
|
|
8
|
+
import typing as T
|
|
9
|
+
import os
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
|
|
12
|
+
from ..compilers import clike_debug_args, clike_optimization_args
|
|
13
|
+
from ...mesonlib import OptionKey
|
|
14
|
+
|
|
15
|
+
if T.TYPE_CHECKING:
|
|
16
|
+
from ...environment import Environment
|
|
17
|
+
from ...compilers.compilers import Compiler
|
|
18
|
+
else:
|
|
19
|
+
# This is a bit clever, for mypy we pretend that these mixins descend from
|
|
20
|
+
# Compiler, so we get all of the methods and attributes defined for us, but
|
|
21
|
+
# for runtime we make them descend from object (which all classes normally
|
|
22
|
+
# do). This gives up DRYer type checking, with no runtime impact
|
|
23
|
+
Compiler = object
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class PGICompiler(Compiler):
|
|
27
|
+
|
|
28
|
+
id = 'pgi'
|
|
29
|
+
|
|
30
|
+
def __init__(self) -> None:
|
|
31
|
+
self.base_options = {OptionKey('b_pch')}
|
|
32
|
+
|
|
33
|
+
default_warn_args = ['-Minform=inform']
|
|
34
|
+
self.warn_args: T.Dict[str, T.List[str]] = {
|
|
35
|
+
'0': [],
|
|
36
|
+
'1': default_warn_args,
|
|
37
|
+
'2': default_warn_args,
|
|
38
|
+
'3': default_warn_args,
|
|
39
|
+
'everything': default_warn_args
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
def get_module_incdir_args(self) -> T.Tuple[str]:
|
|
43
|
+
return ('-module', )
|
|
44
|
+
|
|
45
|
+
def gen_import_library_args(self, implibname: str) -> T.List[str]:
|
|
46
|
+
return []
|
|
47
|
+
|
|
48
|
+
def get_pic_args(self) -> T.List[str]:
|
|
49
|
+
# PGI -fPIC is Linux only.
|
|
50
|
+
if self.info.is_linux():
|
|
51
|
+
return ['-fPIC']
|
|
52
|
+
return []
|
|
53
|
+
|
|
54
|
+
def openmp_flags(self) -> T.List[str]:
|
|
55
|
+
return ['-mp']
|
|
56
|
+
|
|
57
|
+
def get_optimization_args(self, optimization_level: str) -> T.List[str]:
|
|
58
|
+
return clike_optimization_args[optimization_level]
|
|
59
|
+
|
|
60
|
+
def get_debug_args(self, is_debug: bool) -> T.List[str]:
|
|
61
|
+
return clike_debug_args[is_debug]
|
|
62
|
+
|
|
63
|
+
def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str], build_dir: str) -> T.List[str]:
|
|
64
|
+
for idx, i in enumerate(parameter_list):
|
|
65
|
+
if i[:2] == '-I' or i[:2] == '-L':
|
|
66
|
+
parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:]))
|
|
67
|
+
return parameter_list
|
|
68
|
+
|
|
69
|
+
def get_always_args(self) -> T.List[str]:
|
|
70
|
+
return []
|
|
71
|
+
|
|
72
|
+
def get_pch_suffix(self) -> str:
|
|
73
|
+
# PGI defaults to .pch suffix for PCH on Linux and Windows with --pch option
|
|
74
|
+
return 'pch'
|
|
75
|
+
|
|
76
|
+
def get_pch_use_args(self, pch_dir: str, header: str) -> T.List[str]:
|
|
77
|
+
# PGI supports PCH for C++ only.
|
|
78
|
+
hdr = Path(pch_dir).resolve().parent / header
|
|
79
|
+
if self.language == 'cpp':
|
|
80
|
+
return ['--pch',
|
|
81
|
+
'--pch_dir', str(hdr.parent),
|
|
82
|
+
f'-I{hdr.parent}']
|
|
83
|
+
else:
|
|
84
|
+
return []
|
|
85
|
+
|
|
86
|
+
def thread_flags(self, env: 'Environment') -> T.List[str]:
|
|
87
|
+
# PGI cannot accept -pthread, it's already threaded
|
|
88
|
+
return []
|