2022-10-02 23:06:56 +02:00
|
|
|
project('android_translation_layer', ['c', 'java'], default_options: ['b_lundef=false'])
|
|
|
|
|
2022-11-02 14:37:34 +01:00
|
|
|
gnome = import('gnome')
|
2023-05-20 12:26:19 +02:00
|
|
|
fs = import('fs')
|
2022-11-02 14:37:34 +01:00
|
|
|
|
2022-10-02 23:06:56 +02:00
|
|
|
incdir_dep = declare_dependency(include_directories: '.')
|
|
|
|
add_project_dependencies(incdir_dep, language: 'c')
|
|
|
|
|
|
|
|
cc = meson.get_compiler('c')
|
|
|
|
dir_base = meson.current_source_dir()
|
|
|
|
builddir_base = meson.current_build_dir()
|
2022-10-12 17:23:19 +02:00
|
|
|
# FIXME: make art install a pkgconfig file
|
2022-10-02 23:06:56 +02:00
|
|
|
libart_dep = [
|
2022-10-12 17:23:19 +02:00
|
|
|
cc.find_library('art', dirs : [ '/usr' / get_option('libdir') / 'art', '/usr/local' / get_option('libdir') / 'art', get_option('prefix') / get_option('libdir') / 'art' ]),
|
|
|
|
cc.find_library('nativebridge', dirs : [ '/usr' / get_option('libdir') / 'art', '/usr/local' / get_option('libdir') / 'art', get_option('prefix') / get_option('libdir') / 'art' ])
|
2022-10-02 23:06:56 +02:00
|
|
|
]
|
|
|
|
libdl_bio_dep = [
|
2022-10-12 17:23:19 +02:00
|
|
|
cc.find_library('dl_bio')
|
2022-10-02 23:06:56 +02:00
|
|
|
]
|
2023-08-28 20:03:32 +02:00
|
|
|
libskia_dep = [
|
|
|
|
cc.find_library('SkiaSharp')
|
|
|
|
]
|
2024-01-26 12:42:06 +01:00
|
|
|
libandroidfw_dep = [
|
|
|
|
cc.find_library('androidfw', dirs : [ '/usr' / get_option('libdir') / 'art', '/usr/local' / get_option('libdir') / 'art', get_option('prefix') / get_option('libdir') / 'art' ]),
|
|
|
|
]
|
2023-05-20 12:26:19 +02:00
|
|
|
if fs.is_file('/usr' / get_option('libdir') / 'java/core-all_classes.jar')
|
|
|
|
bootclasspath = '/usr' / get_option('libdir') / 'java/core-all_classes.jar'
|
|
|
|
elif fs.is_file('/usr/local' / get_option('libdir') / 'java/core-all_classes.jar')
|
|
|
|
bootclasspath = '/usr/local' / get_option('libdir') / 'java/core-all_classes.jar'
|
|
|
|
elif fs.is_file(get_option('prefix') / get_option('libdir') / 'java/core-all_classes.jar')
|
|
|
|
bootclasspath = get_option('prefix') / get_option('libdir') / 'java/core-all_classes.jar'
|
|
|
|
else
|
|
|
|
error('bootclasspath "core-all_classes.jar" not found')
|
|
|
|
endif
|
2022-10-02 23:06:56 +02:00
|
|
|
|
2022-11-02 14:37:34 +01:00
|
|
|
marshal_files = gnome.genmarshal('marshal',
|
|
|
|
sources: 'src/api-impl-jni/widgets/marshal.list',
|
|
|
|
valist_marshallers: true,
|
|
|
|
internal: true,
|
|
|
|
)
|
|
|
|
|
2023-10-08 16:09:27 +02:00
|
|
|
wl_mod = import('unstable-wayland')
|
|
|
|
|
|
|
|
xml = wl_mod.find_protocol('linux-dmabuf', state: 'unstable', version: 1)
|
|
|
|
linux_dmabuf = wl_mod.scan_xml(xml)
|
|
|
|
|
|
|
|
xml = wl_mod.find_protocol('viewporter')
|
|
|
|
viewporter = wl_mod.scan_xml(xml)
|
2022-11-24 16:11:08 +01:00
|
|
|
|
|
|
|
# libandroid
|
|
|
|
libandroid_so = shared_library('android', [
|
2024-03-16 15:00:22 +01:00
|
|
|
'src/libandroid/asset_manager.c',
|
|
|
|
'src/libandroid/bitmap.c',
|
|
|
|
'src/libandroid/configuration.c',
|
|
|
|
'src/libandroid/input.c',
|
|
|
|
'src/libandroid/looper.c',
|
|
|
|
'src/libandroid/media.c',
|
|
|
|
'src/libandroid/native_window.c',
|
|
|
|
'src/libandroid/sensor.c',
|
|
|
|
'src/libandroid/trace.c',
|
|
|
|
],
|
|
|
|
install: true,
|
|
|
|
soversion: 0,
|
|
|
|
dependencies: [
|
2024-05-09 21:27:19 +02:00
|
|
|
dependency('gtk4'), dependency('jni'), dependency('vulkan'), dependency('openxr').partial_dependency(includes: true)
|
2024-05-25 20:43:33 +02:00
|
|
|
],
|
|
|
|
c_args: [
|
|
|
|
'-D_LARGEFILE64_SOURCE',
|
2024-05-09 21:27:19 +02:00
|
|
|
])
|
2022-11-24 16:11:08 +01:00
|
|
|
|
2022-10-02 23:06:56 +02:00
|
|
|
libtranslationlayer_so = shared_library('translation_layer_main', [
|
2024-03-15 20:02:18 +01:00
|
|
|
'src/api-impl-jni/android_app_NativeActivity.c',
|
|
|
|
'src/api-impl-jni/android_content_res_AssetManager.c',
|
|
|
|
'src/api-impl-jni/android_graphics_Bitmap.c',
|
|
|
|
'src/api-impl-jni/android_graphics_Canvas.c',
|
|
|
|
'src/api-impl-jni/android_graphics_Paint.c',
|
|
|
|
'src/api-impl-jni/android_opengl_GLES20.c',
|
2022-10-12 17:23:19 +02:00
|
|
|
'src/api-impl-jni/android_os_Environment.c',
|
2023-07-25 14:26:29 +02:00
|
|
|
'src/api-impl-jni/android_os_MessageQueue.c',
|
2022-10-12 17:23:19 +02:00
|
|
|
'src/api-impl-jni/android_os_SystemClock.c',
|
2024-03-22 13:17:09 +01:00
|
|
|
'src/api-impl-jni/android_os_Vibrator.c',
|
2023-09-06 17:42:24 +02:00
|
|
|
'src/api-impl-jni/android_util_Log.c',
|
2024-03-15 20:02:18 +01:00
|
|
|
'src/api-impl-jni/android_view_Window.c',
|
|
|
|
'src/api-impl-jni/app/android_app_Activity.c',
|
|
|
|
'src/api-impl-jni/app/android_app_AlertDialog.c',
|
|
|
|
'src/api-impl-jni/app/android_app_Dialog.c',
|
2024-03-17 11:05:42 +01:00
|
|
|
'src/api-impl-jni/app/android_app_NotificationManager.c',
|
2024-03-15 20:02:18 +01:00
|
|
|
'src/api-impl-jni/audio/android_media_AudioTrack.c',
|
|
|
|
'src/api-impl-jni/audio/android_media_SoundPool.c',
|
2024-03-16 12:49:28 +01:00
|
|
|
'src/api-impl-jni/content/android_content_ClipboardManager.c',
|
2024-03-10 12:05:33 +01:00
|
|
|
'src/api-impl-jni/content/android_content_Context.c',
|
2024-05-12 17:03:27 +02:00
|
|
|
'src/api-impl-jni/content/android_content_res_XmlBlock.c',
|
2023-08-27 11:00:09 +02:00
|
|
|
'src/api-impl-jni/database/android_database_SQLiteCommon.c',
|
|
|
|
'src/api-impl-jni/database/android_database_SQLiteConnection.c',
|
2024-03-15 20:02:18 +01:00
|
|
|
'src/api-impl-jni/egl/com_google_android_gles_jni_EGLImpl.c',
|
|
|
|
'src/api-impl-jni/graphics/NinePatchPaintable.c',
|
|
|
|
'src/api-impl-jni/graphics/NinePatchPaintable.c',
|
2023-09-01 13:09:04 +02:00
|
|
|
'src/api-impl-jni/graphics/android_graphics_BitmapFactory.c',
|
2024-03-24 21:01:47 +01:00
|
|
|
'src/api-impl-jni/graphics/android_graphics_GskCanvas.c',
|
2024-03-13 22:51:34 +01:00
|
|
|
'src/api-impl-jni/graphics/android_graphics_Matrix.c',
|
2024-03-24 20:17:24 +01:00
|
|
|
'src/api-impl-jni/graphics/android_graphics_Path.c',
|
2023-09-12 19:30:20 +02:00
|
|
|
'src/api-impl-jni/graphics/android_graphics_Typeface.c',
|
2024-03-15 20:02:18 +01:00
|
|
|
'src/api-impl-jni/graphics/android_graphics_Typeface.c',
|
|
|
|
'src/api-impl-jni/graphics/android_graphics_drawable_Drawable.c',
|
|
|
|
'src/api-impl-jni/graphics/android_graphics_drawable_DrawableContainer.c',
|
|
|
|
'src/api-impl-jni/location/android_location_LocationManager.c',
|
2023-10-08 16:09:27 +02:00
|
|
|
'src/api-impl-jni/media/android_media_MediaCodec.c',
|
2024-03-17 18:36:48 +01:00
|
|
|
'src/api-impl-jni/net/android_net_ConnectivityManager.c',
|
2024-03-16 15:04:02 +01:00
|
|
|
'src/api-impl-jni/sensors/android_hardware_SensorManager.c',
|
2024-03-15 20:02:18 +01:00
|
|
|
'src/api-impl-jni/util.c',
|
|
|
|
'src/api-impl-jni/views/AndroidLayout.c',
|
|
|
|
'src/api-impl-jni/views/android_view_View.c',
|
|
|
|
'src/api-impl-jni/views/android_view_ViewGroup.c',
|
|
|
|
'src/api-impl-jni/widgets/WrapperWidget.c',
|
|
|
|
'src/api-impl-jni/widgets/android_view_SurfaceView.c',
|
2024-02-15 17:56:56 +01:00
|
|
|
'src/api-impl-jni/widgets/android_widget_AbsListView.c',
|
2024-03-20 22:14:34 +01:00
|
|
|
'src/api-impl-jni/widgets/android_widget_AbsSpinner.c',
|
2023-08-22 13:51:37 +02:00
|
|
|
'src/api-impl-jni/widgets/android_widget_Button.c',
|
2024-03-10 16:05:31 +01:00
|
|
|
'src/api-impl-jni/widgets/android_widget_CheckBox.c',
|
2024-02-15 21:08:13 +01:00
|
|
|
'src/api-impl-jni/widgets/android_widget_CompoundButton.c',
|
2023-08-22 13:55:56 +02:00
|
|
|
'src/api-impl-jni/widgets/android_widget_EditText.c',
|
2023-08-22 13:53:52 +02:00
|
|
|
'src/api-impl-jni/widgets/android_widget_ImageButton.c',
|
2022-10-12 17:23:19 +02:00
|
|
|
'src/api-impl-jni/widgets/android_widget_ImageView.c',
|
2024-03-16 22:56:40 +01:00
|
|
|
'src/api-impl-jni/widgets/android_widget_PopupMenu.c',
|
2024-02-17 15:30:44 +01:00
|
|
|
'src/api-impl-jni/widgets/android_widget_PopupWindow.c',
|
2023-11-12 12:01:02 +01:00
|
|
|
'src/api-impl-jni/widgets/android_widget_Progressbar.c',
|
2024-03-10 16:05:31 +01:00
|
|
|
'src/api-impl-jni/widgets/android_widget_RadioButton.c',
|
2024-03-15 20:02:18 +01:00
|
|
|
'src/api-impl-jni/widgets/android_widget_ScrollView.c',
|
|
|
|
'src/api-impl-jni/widgets/android_widget_SeekBar.c',
|
|
|
|
'src/api-impl-jni/widgets/android_widget_TextView.c',
|
2023-08-28 20:03:32 +02:00
|
|
|
'src/sk_area/sk_area.c',
|
2024-03-15 20:02:18 +01:00
|
|
|
linux_dmabuf,
|
|
|
|
viewporter,
|
2022-11-02 14:37:34 +01:00
|
|
|
] + marshal_files,
|
2023-08-28 20:03:32 +02:00
|
|
|
include_directories: ['src/sk_area/'],
|
2022-10-12 17:23:19 +02:00
|
|
|
install: true,
|
|
|
|
install_dir : get_option('libdir') / 'java/dex/android_translation_layer/natives',
|
|
|
|
dependencies: [
|
2023-12-19 14:34:34 +01:00
|
|
|
dependency('gtk4', version: '>=4.8'), dependency('gl'), dependency('egl'), dependency('wayland-client'), dependency('jni'),
|
2024-01-26 12:42:06 +01:00
|
|
|
dependency('libportal'), dependency('sqlite3'), libskia_dep, dependency('libavcodec', version: '>=59'), dependency('libdrm'),
|
2024-03-22 13:17:09 +01:00
|
|
|
dependency('gudev-1.0'),
|
2024-03-16 15:00:22 +01:00
|
|
|
libandroidfw_dep
|
2022-10-12 17:23:19 +02:00
|
|
|
],
|
2022-11-24 16:11:08 +01:00
|
|
|
link_with: [ libandroid_so ],
|
2022-10-12 17:23:19 +02:00
|
|
|
link_args: [
|
|
|
|
'-lasound'
|
2024-05-25 20:43:33 +02:00
|
|
|
],
|
|
|
|
c_args: [
|
|
|
|
'-D_LARGEFILE64_SOURCE',
|
2022-10-12 17:23:19 +02:00
|
|
|
])
|
2022-10-02 23:06:56 +02:00
|
|
|
|
2024-03-16 15:00:22 +01:00
|
|
|
executable('android-translation-layer', [
|
|
|
|
'src/main-executable/main.c',
|
|
|
|
'src/main-executable/r_debug.c'
|
|
|
|
],
|
|
|
|
install: true,
|
|
|
|
dependencies: [
|
2024-04-13 16:34:21 +02:00
|
|
|
dependency('gtk4'), dependency('jni'), declare_dependency(link_with: libtranslationlayer_so), libart_dep, dependency('dl'), libdl_bio_dep, dependency('libportal')
|
2024-03-16 15:00:22 +01:00
|
|
|
],
|
|
|
|
link_args: [
|
|
|
|
'-rdynamic'
|
|
|
|
],
|
|
|
|
install_rpath: get_option('prefix') / get_option('libdir') / 'art:' + get_option('prefix') / get_option('libdir') / 'java/dex/android_translation_layer/natives')
|
2022-10-02 23:06:56 +02:00
|
|
|
|
2024-05-23 23:20:07 +02:00
|
|
|
# hax.jar
|
2022-10-02 23:06:56 +02:00
|
|
|
subdir('src/api-impl')
|
|
|
|
|
|
|
|
# api-impl.jar
|
2024-05-23 23:20:07 +02:00
|
|
|
custom_target('api-impl.jar', build_by_default: true, input: [hax_jar], output: ['api-impl.jar'],
|
2022-10-12 17:23:19 +02:00
|
|
|
install: true,
|
|
|
|
install_dir : get_option('libdir') / 'java/dex/android_translation_layer',
|
2024-05-23 23:20:07 +02:00
|
|
|
command: ['dx', '--dex', '--output='+join_paths(builddir_base, 'api-impl.jar'), hax_jar.full_path()])
|
2022-10-02 23:06:56 +02:00
|
|
|
|
2023-08-09 12:22:16 +02:00
|
|
|
#framework-res.apk
|
|
|
|
subdir('res')
|
2022-10-02 23:06:56 +02:00
|
|
|
|