mirror of
https://github.com/frida/frida-python
synced 2026-06-08 14:16:17 +00:00
96 lines
2.9 KiB
Meson
96 lines
2.9 KiB
Meson
if frida_core_dep.type_name() == 'internal'
|
|
frida_core_subprj = subproject('frida-core')
|
|
frida_gir = frida_core_subprj.get_variable('core_public_gir')
|
|
glib_gir = frida_core_subprj.get_variable('glib_gir')
|
|
gobject_gir = frida_core_subprj.get_variable('gobject_gir')
|
|
gio_gir = frida_core_subprj.get_variable('gio_gir')
|
|
else
|
|
girdir = frida_core_dep.get_variable('frida_girdir')
|
|
frida_gir = girdir / 'Frida-1.0.gir'
|
|
glib_gir = girdir / 'GLib-2.0.gir'
|
|
gobject_gir = girdir / 'GObject-2.0.gir'
|
|
gio_gir = girdir / 'Gio-2.0.gir'
|
|
endif
|
|
|
|
env = environment()
|
|
env.set('PYTHONPATH', meson.current_source_dir())
|
|
|
|
code = custom_target('binding-code',
|
|
output: [
|
|
'__init__.py',
|
|
'__init__.pyi',
|
|
'extension.c',
|
|
],
|
|
input: [
|
|
frida_gir,
|
|
glib_gir,
|
|
gobject_gir,
|
|
gio_gir,
|
|
files(
|
|
'frida_bindgen' / '__init__.py',
|
|
'frida_bindgen' / '__main__.py',
|
|
'frida_bindgen' / 'cli.py',
|
|
'frida_bindgen' / 'codegen.py',
|
|
'frida_bindgen' / 'customization.py',
|
|
'frida_bindgen' / 'loader.py',
|
|
'frida_bindgen' / 'model.py',
|
|
'frida_bindgen' / 'assets' / 'codegen_gobject_globals.c',
|
|
'frida_bindgen' / 'assets' / 'codegen_gobject_methods.c',
|
|
'frida_bindgen' / 'assets' / 'codegen_gobject_prototypes.h',
|
|
'frida_bindgen' / 'assets' / 'codegen_helpers.c',
|
|
'frida_bindgen' / 'assets' / 'codegen_helpers.ts',
|
|
'frida_bindgen' / 'assets' / 'codegen_macros.h',
|
|
'frida_bindgen' / 'assets' / 'codegen_prototypes.h',
|
|
'frida_bindgen' / 'assets' / 'codegen_structs.h',
|
|
'frida_bindgen' / 'assets' / 'codegen_typedefs.h',
|
|
'frida_bindgen' / 'assets' / 'customization_facade.exports',
|
|
'frida_bindgen' / 'assets' / 'customization_facade.ts',
|
|
'frida_bindgen' / 'assets' / 'customization_helpers.imports',
|
|
'frida_bindgen' / 'assets' / 'customization_helpers.ts',
|
|
)
|
|
],
|
|
command: [
|
|
python, '-m', 'frida_bindgen',
|
|
'--frida-gir=@INPUT0@',
|
|
'--glib-gir=@INPUT1@',
|
|
'--gobject-gir=@INPUT2@',
|
|
'--gio-gir=@INPUT3@',
|
|
'--output-py=@OUTPUT0@',
|
|
'--output-pyi=@OUTPUT1@',
|
|
'--output-c=@OUTPUT2@',
|
|
],
|
|
env: env,
|
|
install: true,
|
|
install_dir: [
|
|
python.get_install_dir() / 'frida',
|
|
python.get_install_dir() / 'frida' / '_frida',
|
|
false,
|
|
]
|
|
)
|
|
|
|
py_sources = [
|
|
'py.typed',
|
|
]
|
|
python.install_sources(py_sources, subdir: 'frida', pure: false)
|
|
|
|
extension_py_sources = [
|
|
'py.typed',
|
|
]
|
|
python.install_sources(extension_py_sources, subdir: 'frida' / '_frida', pure: false)
|
|
|
|
extra_link_args = []
|
|
if host_os_family == 'darwin'
|
|
extra_link_args += '-Wl,-exported_symbol,_PyInit__frida'
|
|
elif host_os_family != 'windows'
|
|
extra_link_args += '-Wl,--version-script,' + meson.current_source_dir() / 'extension.version'
|
|
endif
|
|
|
|
extension = python.extension_module('_frida', code[2],
|
|
limited_api: '3.7',
|
|
c_args: frida_component_cflags,
|
|
link_args: extra_link_args,
|
|
dependencies: [python_dep, frida_core_dep, os_deps],
|
|
install: true,
|
|
subdir: 'frida',
|
|
)
|