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,161 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2021 The Meson development team
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from .common import cmake_is_debug
|
|
6
|
+
from .. import mlog
|
|
7
|
+
from ..mesonlib import Version
|
|
8
|
+
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
import re
|
|
11
|
+
import typing as T
|
|
12
|
+
|
|
13
|
+
if T.TYPE_CHECKING:
|
|
14
|
+
from .traceparser import CMakeTraceParser
|
|
15
|
+
from ..environment import Environment
|
|
16
|
+
from ..compilers import Compiler
|
|
17
|
+
from ..dependencies import MissingCompiler
|
|
18
|
+
|
|
19
|
+
# Small duplication of ExtraFramework to parse full
|
|
20
|
+
# framework paths as exposed by CMake
|
|
21
|
+
def _get_framework_latest_version(path: Path) -> str:
|
|
22
|
+
versions: list[Version] = []
|
|
23
|
+
for each in path.glob('Versions/*'):
|
|
24
|
+
# macOS filesystems are usually case-insensitive
|
|
25
|
+
if each.name.lower() == 'current':
|
|
26
|
+
continue
|
|
27
|
+
versions.append(Version(each.name))
|
|
28
|
+
if len(versions) == 0:
|
|
29
|
+
# most system frameworks do not have a 'Versions' directory
|
|
30
|
+
return 'Headers'
|
|
31
|
+
return 'Versions/{}/Headers'.format(sorted(versions)[-1]._s)
|
|
32
|
+
|
|
33
|
+
def _get_framework_include_path(path: Path) -> T.Optional[str]:
|
|
34
|
+
trials = ('Headers', 'Versions/Current/Headers', _get_framework_latest_version(path))
|
|
35
|
+
for each in trials:
|
|
36
|
+
trial = path / each
|
|
37
|
+
if trial.is_dir():
|
|
38
|
+
return trial.as_posix()
|
|
39
|
+
return None
|
|
40
|
+
|
|
41
|
+
class ResolvedTarget:
|
|
42
|
+
def __init__(self) -> None:
|
|
43
|
+
self.include_directories: T.List[str] = []
|
|
44
|
+
self.link_flags: T.List[str] = []
|
|
45
|
+
self.public_compile_opts: T.List[str] = []
|
|
46
|
+
self.libraries: T.List[str] = []
|
|
47
|
+
|
|
48
|
+
def resolve_cmake_trace_targets(target_name: str,
|
|
49
|
+
trace: 'CMakeTraceParser',
|
|
50
|
+
env: 'Environment',
|
|
51
|
+
*,
|
|
52
|
+
clib_compiler: T.Union['MissingCompiler', 'Compiler'] = None,
|
|
53
|
+
not_found_warning: T.Callable[[str], None] = lambda x: None) -> ResolvedTarget:
|
|
54
|
+
res = ResolvedTarget()
|
|
55
|
+
targets = [target_name]
|
|
56
|
+
|
|
57
|
+
# recognise arguments we should pass directly to the linker
|
|
58
|
+
reg_is_lib = re.compile(r'^(-l[a-zA-Z0-9_]+|-l?pthread)$')
|
|
59
|
+
reg_is_maybe_bare_lib = re.compile(r'^[a-zA-Z0-9_]+$')
|
|
60
|
+
|
|
61
|
+
is_debug = cmake_is_debug(env)
|
|
62
|
+
|
|
63
|
+
processed_targets: T.List[str] = []
|
|
64
|
+
while len(targets) > 0:
|
|
65
|
+
curr = targets.pop(0)
|
|
66
|
+
|
|
67
|
+
# Skip already processed targets
|
|
68
|
+
if curr in processed_targets:
|
|
69
|
+
continue
|
|
70
|
+
|
|
71
|
+
if curr not in trace.targets:
|
|
72
|
+
curr_path = Path(curr)
|
|
73
|
+
if reg_is_lib.match(curr):
|
|
74
|
+
res.libraries += [curr]
|
|
75
|
+
elif curr_path.is_absolute() and curr_path.exists():
|
|
76
|
+
if any(x.endswith('.framework') for x in curr_path.parts):
|
|
77
|
+
# Frameworks detected by CMake are passed as absolute paths
|
|
78
|
+
# Split into -F/path/to/ and -framework name
|
|
79
|
+
path_to_framework = []
|
|
80
|
+
# Try to slice off the `Versions/X/name.tbd`
|
|
81
|
+
for x in curr_path.parts:
|
|
82
|
+
path_to_framework.append(x)
|
|
83
|
+
if x.endswith('.framework'):
|
|
84
|
+
break
|
|
85
|
+
curr_path = Path(*path_to_framework)
|
|
86
|
+
framework_path = curr_path.parent
|
|
87
|
+
framework_name = curr_path.stem
|
|
88
|
+
res.libraries += [f'-F{framework_path}', '-framework', framework_name]
|
|
89
|
+
else:
|
|
90
|
+
res.libraries += [curr]
|
|
91
|
+
elif reg_is_maybe_bare_lib.match(curr) and clib_compiler:
|
|
92
|
+
# CMake library dependencies can be passed as bare library names,
|
|
93
|
+
# CMake brute-forces a combination of prefix/suffix combinations to find the
|
|
94
|
+
# right library. Assume any bare argument passed which is not also a CMake
|
|
95
|
+
# target must be a system library we should try to link against.
|
|
96
|
+
flib = clib_compiler.find_library(curr, env, [])
|
|
97
|
+
if flib is not None:
|
|
98
|
+
res.libraries += flib
|
|
99
|
+
else:
|
|
100
|
+
not_found_warning(curr)
|
|
101
|
+
else:
|
|
102
|
+
not_found_warning(curr)
|
|
103
|
+
continue
|
|
104
|
+
|
|
105
|
+
tgt = trace.targets[curr]
|
|
106
|
+
cfgs = []
|
|
107
|
+
cfg = ''
|
|
108
|
+
mlog.debug(tgt)
|
|
109
|
+
|
|
110
|
+
if 'INTERFACE_INCLUDE_DIRECTORIES' in tgt.properties:
|
|
111
|
+
res.include_directories += [x for x in tgt.properties['INTERFACE_INCLUDE_DIRECTORIES'] if x]
|
|
112
|
+
|
|
113
|
+
if 'INTERFACE_LINK_OPTIONS' in tgt.properties:
|
|
114
|
+
res.link_flags += [x for x in tgt.properties['INTERFACE_LINK_OPTIONS'] if x]
|
|
115
|
+
|
|
116
|
+
if 'INTERFACE_COMPILE_DEFINITIONS' in tgt.properties:
|
|
117
|
+
res.public_compile_opts += ['-D' + re.sub('^-D', '', x) for x in tgt.properties['INTERFACE_COMPILE_DEFINITIONS'] if x]
|
|
118
|
+
|
|
119
|
+
if 'INTERFACE_COMPILE_OPTIONS' in tgt.properties:
|
|
120
|
+
res.public_compile_opts += [x for x in tgt.properties['INTERFACE_COMPILE_OPTIONS'] if x]
|
|
121
|
+
|
|
122
|
+
if 'IMPORTED_CONFIGURATIONS' in tgt.properties:
|
|
123
|
+
cfgs = [x for x in tgt.properties['IMPORTED_CONFIGURATIONS'] if x]
|
|
124
|
+
cfg = cfgs[0]
|
|
125
|
+
|
|
126
|
+
if is_debug:
|
|
127
|
+
if 'DEBUG' in cfgs:
|
|
128
|
+
cfg = 'DEBUG'
|
|
129
|
+
elif 'RELEASE' in cfgs:
|
|
130
|
+
cfg = 'RELEASE'
|
|
131
|
+
else:
|
|
132
|
+
if 'RELEASE' in cfgs:
|
|
133
|
+
cfg = 'RELEASE'
|
|
134
|
+
|
|
135
|
+
if f'IMPORTED_IMPLIB_{cfg}' in tgt.properties:
|
|
136
|
+
res.libraries += [x for x in tgt.properties[f'IMPORTED_IMPLIB_{cfg}'] if x]
|
|
137
|
+
elif 'IMPORTED_IMPLIB' in tgt.properties:
|
|
138
|
+
res.libraries += [x for x in tgt.properties['IMPORTED_IMPLIB'] if x]
|
|
139
|
+
elif f'IMPORTED_LOCATION_{cfg}' in tgt.properties:
|
|
140
|
+
res.libraries += [x for x in tgt.properties[f'IMPORTED_LOCATION_{cfg}'] if x]
|
|
141
|
+
elif 'IMPORTED_LOCATION' in tgt.properties:
|
|
142
|
+
res.libraries += [x for x in tgt.properties['IMPORTED_LOCATION'] if x]
|
|
143
|
+
|
|
144
|
+
if 'LINK_LIBRARIES' in tgt.properties:
|
|
145
|
+
targets += [x for x in tgt.properties['LINK_LIBRARIES'] if x]
|
|
146
|
+
if 'INTERFACE_LINK_LIBRARIES' in tgt.properties:
|
|
147
|
+
targets += [x for x in tgt.properties['INTERFACE_LINK_LIBRARIES'] if x]
|
|
148
|
+
|
|
149
|
+
if f'IMPORTED_LINK_DEPENDENT_LIBRARIES_{cfg}' in tgt.properties:
|
|
150
|
+
targets += [x for x in tgt.properties[f'IMPORTED_LINK_DEPENDENT_LIBRARIES_{cfg}'] if x]
|
|
151
|
+
elif 'IMPORTED_LINK_DEPENDENT_LIBRARIES' in tgt.properties:
|
|
152
|
+
targets += [x for x in tgt.properties['IMPORTED_LINK_DEPENDENT_LIBRARIES'] if x]
|
|
153
|
+
|
|
154
|
+
processed_targets += [curr]
|
|
155
|
+
|
|
156
|
+
# Do not sort flags here -- this breaks
|
|
157
|
+
# semantics of eg. `-framework CoreAudio`
|
|
158
|
+
# or `-Lpath/to/root -llibrary`
|
|
159
|
+
# see eg. #11113
|
|
160
|
+
|
|
161
|
+
return res
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2017 The Meson development team
|
|
3
|
+
|
|
4
|
+
# Public symbols for compilers sub-package when using 'from . import compilers'
|
|
5
|
+
__all__ = [
|
|
6
|
+
'Compiler',
|
|
7
|
+
'RunResult',
|
|
8
|
+
|
|
9
|
+
'all_languages',
|
|
10
|
+
'base_options',
|
|
11
|
+
'clib_langs',
|
|
12
|
+
'clink_langs',
|
|
13
|
+
'c_suffixes',
|
|
14
|
+
'cpp_suffixes',
|
|
15
|
+
'get_base_compile_args',
|
|
16
|
+
'get_base_link_args',
|
|
17
|
+
'is_assembly',
|
|
18
|
+
'is_header',
|
|
19
|
+
'is_library',
|
|
20
|
+
'is_llvm_ir',
|
|
21
|
+
'is_object',
|
|
22
|
+
'is_source',
|
|
23
|
+
'is_known_suffix',
|
|
24
|
+
'lang_suffixes',
|
|
25
|
+
'LANGUAGES_USING_LDFLAGS',
|
|
26
|
+
'sort_clink',
|
|
27
|
+
'SUFFIX_TO_LANG',
|
|
28
|
+
|
|
29
|
+
'compiler_from_language',
|
|
30
|
+
'detect_compiler_for',
|
|
31
|
+
'detect_static_linker',
|
|
32
|
+
'detect_c_compiler',
|
|
33
|
+
'detect_cpp_compiler',
|
|
34
|
+
'detect_cuda_compiler',
|
|
35
|
+
'detect_fortran_compiler',
|
|
36
|
+
'detect_objc_compiler',
|
|
37
|
+
'detect_objcpp_compiler',
|
|
38
|
+
'detect_java_compiler',
|
|
39
|
+
'detect_cs_compiler',
|
|
40
|
+
'detect_vala_compiler',
|
|
41
|
+
'detect_rust_compiler',
|
|
42
|
+
'detect_d_compiler',
|
|
43
|
+
'detect_swift_compiler',
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
# Bring symbols from each module into compilers sub-package namespace
|
|
47
|
+
from .compilers import (
|
|
48
|
+
Compiler,
|
|
49
|
+
RunResult,
|
|
50
|
+
all_languages,
|
|
51
|
+
base_options,
|
|
52
|
+
clib_langs,
|
|
53
|
+
clink_langs,
|
|
54
|
+
c_suffixes,
|
|
55
|
+
cpp_suffixes,
|
|
56
|
+
get_base_compile_args,
|
|
57
|
+
get_base_link_args,
|
|
58
|
+
is_header,
|
|
59
|
+
is_source,
|
|
60
|
+
is_assembly,
|
|
61
|
+
is_llvm_ir,
|
|
62
|
+
is_object,
|
|
63
|
+
is_library,
|
|
64
|
+
is_known_suffix,
|
|
65
|
+
lang_suffixes,
|
|
66
|
+
LANGUAGES_USING_LDFLAGS,
|
|
67
|
+
sort_clink,
|
|
68
|
+
SUFFIX_TO_LANG,
|
|
69
|
+
)
|
|
70
|
+
from .detect import (
|
|
71
|
+
compiler_from_language,
|
|
72
|
+
detect_compiler_for,
|
|
73
|
+
detect_static_linker,
|
|
74
|
+
detect_c_compiler,
|
|
75
|
+
detect_cpp_compiler,
|
|
76
|
+
detect_cuda_compiler,
|
|
77
|
+
detect_objc_compiler,
|
|
78
|
+
detect_objcpp_compiler,
|
|
79
|
+
detect_fortran_compiler,
|
|
80
|
+
detect_java_compiler,
|
|
81
|
+
detect_cs_compiler,
|
|
82
|
+
detect_vala_compiler,
|
|
83
|
+
detect_rust_compiler,
|
|
84
|
+
detect_d_compiler,
|
|
85
|
+
detect_swift_compiler,
|
|
86
|
+
)
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
import typing as T
|
|
5
|
+
|
|
6
|
+
from ..mesonlib import EnvironmentException, OptionKey, get_meson_command
|
|
7
|
+
from .compilers import Compiler
|
|
8
|
+
from .mixins.metrowerks import MetrowerksCompiler, mwasmarm_instruction_set_args, mwasmeppc_instruction_set_args
|
|
9
|
+
|
|
10
|
+
if T.TYPE_CHECKING:
|
|
11
|
+
from ..environment import Environment
|
|
12
|
+
from ..linkers.linkers import DynamicLinker
|
|
13
|
+
from ..mesonlib import MachineChoice
|
|
14
|
+
from ..envconfig import MachineInfo
|
|
15
|
+
|
|
16
|
+
nasm_optimization_args: T.Dict[str, T.List[str]] = {
|
|
17
|
+
'plain': [],
|
|
18
|
+
'0': ['-O0'],
|
|
19
|
+
'g': ['-O0'],
|
|
20
|
+
'1': ['-O1'],
|
|
21
|
+
'2': ['-Ox'],
|
|
22
|
+
'3': ['-Ox'],
|
|
23
|
+
's': ['-Ox'],
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class NasmCompiler(Compiler):
|
|
28
|
+
language = 'nasm'
|
|
29
|
+
id = 'nasm'
|
|
30
|
+
|
|
31
|
+
# https://learn.microsoft.com/en-us/cpp/c-runtime-library/crt-library-features
|
|
32
|
+
crt_args: T.Dict[str, T.List[str]] = {
|
|
33
|
+
'none': [],
|
|
34
|
+
'md': ['/DEFAULTLIB:ucrt.lib', '/DEFAULTLIB:vcruntime.lib', '/DEFAULTLIB:msvcrt.lib'],
|
|
35
|
+
'mdd': ['/DEFAULTLIB:ucrtd.lib', '/DEFAULTLIB:vcruntimed.lib', '/DEFAULTLIB:msvcrtd.lib'],
|
|
36
|
+
'mt': ['/DEFAULTLIB:libucrt.lib', '/DEFAULTLIB:libvcruntime.lib', '/DEFAULTLIB:libcmt.lib'],
|
|
37
|
+
'mtd': ['/DEFAULTLIB:libucrtd.lib', '/DEFAULTLIB:libvcruntimed.lib', '/DEFAULTLIB:libcmtd.lib'],
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str,
|
|
41
|
+
for_machine: 'MachineChoice', info: 'MachineInfo',
|
|
42
|
+
linker: T.Optional['DynamicLinker'] = None,
|
|
43
|
+
full_version: T.Optional[str] = None, is_cross: bool = False):
|
|
44
|
+
super().__init__(ccache, exelist, version, for_machine, info, linker, full_version, is_cross)
|
|
45
|
+
if 'link' in self.linker.id:
|
|
46
|
+
self.base_options.add(OptionKey('b_vscrt'))
|
|
47
|
+
|
|
48
|
+
def needs_static_linker(self) -> bool:
|
|
49
|
+
return True
|
|
50
|
+
|
|
51
|
+
def get_always_args(self) -> T.List[str]:
|
|
52
|
+
cpu = '64' if self.info.is_64_bit else '32'
|
|
53
|
+
if self.info.is_windows() or self.info.is_cygwin():
|
|
54
|
+
plat = 'win'
|
|
55
|
+
define = f'WIN{cpu}'
|
|
56
|
+
elif self.info.is_darwin():
|
|
57
|
+
plat = 'macho'
|
|
58
|
+
define = 'MACHO'
|
|
59
|
+
else:
|
|
60
|
+
plat = 'elf'
|
|
61
|
+
define = 'ELF'
|
|
62
|
+
args = ['-f', f'{plat}{cpu}', f'-D{define}']
|
|
63
|
+
if self.info.is_64_bit:
|
|
64
|
+
args.append('-D__x86_64__')
|
|
65
|
+
return args
|
|
66
|
+
|
|
67
|
+
def get_werror_args(self) -> T.List[str]:
|
|
68
|
+
return ['-Werror']
|
|
69
|
+
|
|
70
|
+
def get_output_args(self, outputname: str) -> T.List[str]:
|
|
71
|
+
return ['-o', outputname]
|
|
72
|
+
|
|
73
|
+
def unix_args_to_native(self, args: T.List[str]) -> T.List[str]:
|
|
74
|
+
outargs: T.List[str] = []
|
|
75
|
+
for arg in args:
|
|
76
|
+
if arg == '-pthread':
|
|
77
|
+
continue
|
|
78
|
+
outargs.append(arg)
|
|
79
|
+
return outargs
|
|
80
|
+
|
|
81
|
+
def get_optimization_args(self, optimization_level: str) -> T.List[str]:
|
|
82
|
+
return nasm_optimization_args[optimization_level]
|
|
83
|
+
|
|
84
|
+
def get_debug_args(self, is_debug: bool) -> T.List[str]:
|
|
85
|
+
if is_debug:
|
|
86
|
+
if self.info.is_windows():
|
|
87
|
+
return []
|
|
88
|
+
return ['-g', '-F', 'dwarf']
|
|
89
|
+
return []
|
|
90
|
+
|
|
91
|
+
def get_depfile_suffix(self) -> str:
|
|
92
|
+
return 'd'
|
|
93
|
+
|
|
94
|
+
def get_dependency_gen_args(self, outtarget: str, outfile: str) -> T.List[str]:
|
|
95
|
+
return ['-MD', outfile, '-MQ', outtarget]
|
|
96
|
+
|
|
97
|
+
def sanity_check(self, work_dir: str, environment: 'Environment') -> None:
|
|
98
|
+
if self.info.cpu_family not in {'x86', 'x86_64'}:
|
|
99
|
+
raise EnvironmentException(f'ASM compiler {self.id!r} does not support {self.info.cpu_family} CPU family')
|
|
100
|
+
|
|
101
|
+
def get_pic_args(self) -> T.List[str]:
|
|
102
|
+
return []
|
|
103
|
+
|
|
104
|
+
def get_include_args(self, path: str, is_system: bool) -> T.List[str]:
|
|
105
|
+
if not path:
|
|
106
|
+
path = '.'
|
|
107
|
+
return ['-I' + path]
|
|
108
|
+
|
|
109
|
+
def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str],
|
|
110
|
+
build_dir: str) -> T.List[str]:
|
|
111
|
+
for idx, i in enumerate(parameter_list):
|
|
112
|
+
if i[:2] == '-I':
|
|
113
|
+
parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:]))
|
|
114
|
+
return parameter_list
|
|
115
|
+
|
|
116
|
+
def get_crt_compile_args(self, crt_val: str, buildtype: str) -> T.List[str]:
|
|
117
|
+
return []
|
|
118
|
+
|
|
119
|
+
# Linking ASM-only objects into an executable or DLL
|
|
120
|
+
# require this, otherwise it'll fail to find
|
|
121
|
+
# _WinMain or _DllMainCRTStartup.
|
|
122
|
+
def get_crt_link_args(self, crt_val: str, buildtype: str) -> T.List[str]:
|
|
123
|
+
if not self.info.is_windows():
|
|
124
|
+
return []
|
|
125
|
+
return self.crt_args[self.get_crt_val(crt_val, buildtype)]
|
|
126
|
+
|
|
127
|
+
class YasmCompiler(NasmCompiler):
|
|
128
|
+
id = 'yasm'
|
|
129
|
+
|
|
130
|
+
def get_optimization_args(self, optimization_level: str) -> T.List[str]:
|
|
131
|
+
# Yasm is incompatible with Nasm optimization flags.
|
|
132
|
+
return []
|
|
133
|
+
|
|
134
|
+
def get_exelist(self, ccache: bool = True) -> T.List[str]:
|
|
135
|
+
# Wrap yasm executable with an internal script that will write depfile.
|
|
136
|
+
exelist = super().get_exelist(ccache)
|
|
137
|
+
return get_meson_command() + ['--internal', 'yasm'] + exelist
|
|
138
|
+
|
|
139
|
+
def get_debug_args(self, is_debug: bool) -> T.List[str]:
|
|
140
|
+
if is_debug:
|
|
141
|
+
if self.info.is_windows():
|
|
142
|
+
return ['-g', 'null']
|
|
143
|
+
return ['-g', 'dwarf2']
|
|
144
|
+
return []
|
|
145
|
+
|
|
146
|
+
def get_dependency_gen_args(self, outtarget: str, outfile: str) -> T.List[str]:
|
|
147
|
+
return ['--depfile', outfile]
|
|
148
|
+
|
|
149
|
+
# https://learn.microsoft.com/en-us/cpp/assembler/masm/ml-and-ml64-command-line-reference
|
|
150
|
+
class MasmCompiler(Compiler):
|
|
151
|
+
language = 'masm'
|
|
152
|
+
id = 'ml'
|
|
153
|
+
|
|
154
|
+
def get_compile_only_args(self) -> T.List[str]:
|
|
155
|
+
return ['/c']
|
|
156
|
+
|
|
157
|
+
def get_argument_syntax(self) -> str:
|
|
158
|
+
return 'msvc'
|
|
159
|
+
|
|
160
|
+
def needs_static_linker(self) -> bool:
|
|
161
|
+
return True
|
|
162
|
+
|
|
163
|
+
def get_always_args(self) -> T.List[str]:
|
|
164
|
+
return ['/nologo']
|
|
165
|
+
|
|
166
|
+
def get_werror_args(self) -> T.List[str]:
|
|
167
|
+
return ['/WX']
|
|
168
|
+
|
|
169
|
+
def get_output_args(self, outputname: str) -> T.List[str]:
|
|
170
|
+
return ['/Fo', outputname]
|
|
171
|
+
|
|
172
|
+
def get_optimization_args(self, optimization_level: str) -> T.List[str]:
|
|
173
|
+
return []
|
|
174
|
+
|
|
175
|
+
def get_debug_args(self, is_debug: bool) -> T.List[str]:
|
|
176
|
+
if is_debug:
|
|
177
|
+
return ['/Zi']
|
|
178
|
+
return []
|
|
179
|
+
|
|
180
|
+
def sanity_check(self, work_dir: str, environment: 'Environment') -> None:
|
|
181
|
+
if self.info.cpu_family not in {'x86', 'x86_64'}:
|
|
182
|
+
raise EnvironmentException(f'ASM compiler {self.id!r} does not support {self.info.cpu_family} CPU family')
|
|
183
|
+
|
|
184
|
+
def get_pic_args(self) -> T.List[str]:
|
|
185
|
+
return []
|
|
186
|
+
|
|
187
|
+
def get_include_args(self, path: str, is_system: bool) -> T.List[str]:
|
|
188
|
+
if not path:
|
|
189
|
+
path = '.'
|
|
190
|
+
return ['-I' + path]
|
|
191
|
+
|
|
192
|
+
def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str],
|
|
193
|
+
build_dir: str) -> T.List[str]:
|
|
194
|
+
for idx, i in enumerate(parameter_list):
|
|
195
|
+
if i[:2] == '-I' or i[:2] == '/I':
|
|
196
|
+
parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:]))
|
|
197
|
+
return parameter_list
|
|
198
|
+
|
|
199
|
+
def get_crt_compile_args(self, crt_val: str, buildtype: str) -> T.List[str]:
|
|
200
|
+
return []
|
|
201
|
+
|
|
202
|
+
def depfile_for_object(self, objfile: str) -> T.Optional[str]:
|
|
203
|
+
return None
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
# https://learn.microsoft.com/en-us/cpp/assembler/arm/arm-assembler-command-line-reference
|
|
207
|
+
class MasmARMCompiler(Compiler):
|
|
208
|
+
language = 'masm'
|
|
209
|
+
id = 'armasm'
|
|
210
|
+
|
|
211
|
+
def needs_static_linker(self) -> bool:
|
|
212
|
+
return True
|
|
213
|
+
|
|
214
|
+
def get_always_args(self) -> T.List[str]:
|
|
215
|
+
return ['-nologo']
|
|
216
|
+
|
|
217
|
+
def get_werror_args(self) -> T.List[str]:
|
|
218
|
+
return []
|
|
219
|
+
|
|
220
|
+
def get_output_args(self, outputname: str) -> T.List[str]:
|
|
221
|
+
return ['-o', outputname]
|
|
222
|
+
|
|
223
|
+
def get_optimization_args(self, optimization_level: str) -> T.List[str]:
|
|
224
|
+
return []
|
|
225
|
+
|
|
226
|
+
def get_debug_args(self, is_debug: bool) -> T.List[str]:
|
|
227
|
+
if is_debug:
|
|
228
|
+
return ['-g']
|
|
229
|
+
return []
|
|
230
|
+
|
|
231
|
+
def sanity_check(self, work_dir: str, environment: 'Environment') -> None:
|
|
232
|
+
if self.info.cpu_family not in {'arm', 'aarch64'}:
|
|
233
|
+
raise EnvironmentException(f'ASM compiler {self.id!r} does not support {self.info.cpu_family} CPU family')
|
|
234
|
+
|
|
235
|
+
def get_pic_args(self) -> T.List[str]:
|
|
236
|
+
return []
|
|
237
|
+
|
|
238
|
+
def get_include_args(self, path: str, is_system: bool) -> T.List[str]:
|
|
239
|
+
if not path:
|
|
240
|
+
path = '.'
|
|
241
|
+
return ['-i' + path]
|
|
242
|
+
|
|
243
|
+
def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str],
|
|
244
|
+
build_dir: str) -> T.List[str]:
|
|
245
|
+
for idx, i in enumerate(parameter_list):
|
|
246
|
+
if i[:2] == '-I':
|
|
247
|
+
parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:]))
|
|
248
|
+
return parameter_list
|
|
249
|
+
|
|
250
|
+
def get_crt_compile_args(self, crt_val: str, buildtype: str) -> T.List[str]:
|
|
251
|
+
return []
|
|
252
|
+
|
|
253
|
+
def depfile_for_object(self, objfile: str) -> T.Optional[str]:
|
|
254
|
+
return None
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
class MetrowerksAsmCompiler(MetrowerksCompiler, Compiler):
|
|
258
|
+
language = 'nasm'
|
|
259
|
+
|
|
260
|
+
def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str,
|
|
261
|
+
for_machine: 'MachineChoice', info: 'MachineInfo',
|
|
262
|
+
linker: T.Optional['DynamicLinker'] = None,
|
|
263
|
+
full_version: T.Optional[str] = None, is_cross: bool = False):
|
|
264
|
+
Compiler.__init__(self, ccache, exelist, version, for_machine, info, linker, full_version, is_cross)
|
|
265
|
+
MetrowerksCompiler.__init__(self)
|
|
266
|
+
|
|
267
|
+
self.warn_args: T.Dict[str, T.List[str]] = {
|
|
268
|
+
'0': [],
|
|
269
|
+
'1': [],
|
|
270
|
+
'2': [],
|
|
271
|
+
'3': [],
|
|
272
|
+
'everything': []}
|
|
273
|
+
self.can_compile_suffixes.add('s')
|
|
274
|
+
|
|
275
|
+
def get_crt_compile_args(self, crt_val: str, buildtype: str) -> T.List[str]:
|
|
276
|
+
return []
|
|
277
|
+
|
|
278
|
+
def get_optimization_args(self, optimization_level: str) -> T.List[str]:
|
|
279
|
+
return []
|
|
280
|
+
|
|
281
|
+
def get_pic_args(self) -> T.List[str]:
|
|
282
|
+
return []
|
|
283
|
+
|
|
284
|
+
def needs_static_linker(self) -> bool:
|
|
285
|
+
return True
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
class MetrowerksAsmCompilerARM(MetrowerksAsmCompiler):
|
|
289
|
+
id = 'mwasmarm'
|
|
290
|
+
|
|
291
|
+
def get_instruction_set_args(self, instruction_set: str) -> T.Optional[T.List[str]]:
|
|
292
|
+
return mwasmarm_instruction_set_args.get(instruction_set, None)
|
|
293
|
+
|
|
294
|
+
def sanity_check(self, work_dir: str, environment: 'Environment') -> None:
|
|
295
|
+
if self.info.cpu_family not in {'arm'}:
|
|
296
|
+
raise EnvironmentException(f'ASM compiler {self.id!r} does not support {self.info.cpu_family} CPU family')
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
class MetrowerksAsmCompilerEmbeddedPowerPC(MetrowerksAsmCompiler):
|
|
300
|
+
id = 'mwasmeppc'
|
|
301
|
+
|
|
302
|
+
def get_instruction_set_args(self, instruction_set: str) -> T.Optional[T.List[str]]:
|
|
303
|
+
return mwasmeppc_instruction_set_args.get(instruction_set, None)
|
|
304
|
+
|
|
305
|
+
def sanity_check(self, work_dir: str, environment: 'Environment') -> None:
|
|
306
|
+
if self.info.cpu_family not in {'ppc'}:
|
|
307
|
+
raise EnvironmentException(f'ASM compiler {self.id!r} does not support {self.info.cpu_family} CPU family')
|