From 16423270154ab75987b05723ae45f30cdd8a0e3d Mon Sep 17 00:00:00 2001 From: KreitinnSoftware <80591934+KreitinnSoftware@users.noreply.github.com> Date: Tue, 6 Feb 2024 08:26:50 -0300 Subject: [PATCH] [ANDROID] Fix GLib and GObject Library Names (#1247) * [ANDROID] Fix GLib and GObject Library Names * [ANDROID] Fix gdk3, gdkpixbuf2, gio2, gmodule2, gtkx112, gdkx112, pangocairo Library Names --- src/library_list.h | 10 +++++++++ src/wrapped/wrappedgdk3.c | 17 +++++++++++++++- src/wrapped/wrappedgdkpixbuf2.c | 6 +++++- src/wrapped/wrappedgdkx112.c | 13 +++++++++++- src/wrapped/wrappedgio2.c | 14 ++++++++++++- src/wrapped/wrappedglib2.c | 6 +++++- src/wrapped/wrappedgmodule2.c | 11 +++++++++- src/wrapped/wrappedgobject2.c | 18 ++++++++++++++++- src/wrapped/wrappedgtk3.c | 29 ++++++++++++++++++++++++++ src/wrapped/wrappedgtkx112.c | 36 ++++++++++++++++++++++++++++++++- src/wrapped/wrappedpango.c | 12 ++++++++++- src/wrapped/wrappedpangocairo.c | 12 +++++++++-- 12 files changed, 173 insertions(+), 11 deletions(-) diff --git a/src/library_list.h b/src/library_list.h index d244edfe8b..c43bdd75f8 100644 --- a/src/library_list.h +++ b/src/library_list.h @@ -339,6 +339,16 @@ GO("libogg.so", libogg) GO("libFLAC.so", flac) GO("libz.so", libz) GO("libandroid-shmem.so", androidshmem) +GO("libgobject-2.0.so", gobject2) +GO("libglib-2.0.so", glib2) +GO("libgtk-3.so", gtk3) +GO("libgdk-3.so", gdk3) +GO("libgdk_pixbuf-2.0.so", gdkpixbuf2) +GO("libgio-2.0.so", gio2) +GO("libgmodule-2.0.so", gmodule2) +GO("libgtk-x11-2.0.so", gtkx112) +GO("libgdk-x11-2.0.so", gdkx112) +GO("libpangocairo-1.0.so", pangocairo) #else GO("libc.so.6", libc) GO("libm.so.6", libm) diff --git a/src/wrapped/wrappedgdk3.c b/src/wrapped/wrappedgdk3.c index 0cfc6fcd57..f7fe5f1098 100644 --- a/src/wrapped/wrappedgdk3.c +++ b/src/wrapped/wrappedgdk3.c @@ -18,7 +18,11 @@ #include "emu/x64emu_private.h" #include "gtkclass.h" -const char* gdk3Name = "libgdk-3.so.0"; +#ifdef ANDROID + const char* gdk3Name = "libgdk-3.so"; +#else + const char* gdk3Name = "libgdk-3.so.0"; +#endif #define LIBNAME gdk3 static char* libname = NULL; @@ -186,6 +190,16 @@ EXPORT uint32_t my3_gdk_threads_add_timeout_full(x64emu_t* emu, int priotity, ui if(box64_nogtk) \ return -1; +#ifdef ANDROID +#define CUSTOM_INIT \ + libname = lib->name; \ + SETALT(my3_); \ + getMy(lib); \ + setNeededLibs(lib, 3, \ + "libgobject-2.0.so", \ + "libgio-2.0.so", \ + "libgdk_pixbuf-2.0.so"); +#else #define CUSTOM_INIT \ libname = lib->name; \ SETALT(my3_); \ @@ -194,6 +208,7 @@ EXPORT uint32_t my3_gdk_threads_add_timeout_full(x64emu_t* emu, int priotity, ui "libgobject-2.0.so.0", \ "libgio-2.0.so.0", \ "libgdk_pixbuf-2.0.so.0"); +#endif #define CUSTOM_FINI \ freeMy(); diff --git a/src/wrapped/wrappedgdkpixbuf2.c b/src/wrapped/wrappedgdkpixbuf2.c index 34770c8c23..8ba0dcb3c8 100644 --- a/src/wrapped/wrappedgdkpixbuf2.c +++ b/src/wrapped/wrappedgdkpixbuf2.c @@ -17,7 +17,11 @@ #include "box64context.h" #include "emu/x64emu_private.h" -const char* gdkpixbuf2Name = "libgdk_pixbuf-2.0.so.0"; +#ifdef ANDROID + const char* gdkpixbuf2Name = "libgdk_pixbuf-2.0.so"; +#else + const char* gdkpixbuf2Name = "libgdk_pixbuf-2.0.so.0"; +#endif #define LIBNAME gdkpixbuf2 #include "generated/wrappedgdkpixbuf2types.h" diff --git a/src/wrapped/wrappedgdkx112.c b/src/wrapped/wrappedgdkx112.c index 9b7bde77c1..3c3f3fb937 100644 --- a/src/wrapped/wrappedgdkx112.c +++ b/src/wrapped/wrappedgdkx112.c @@ -18,7 +18,11 @@ #include "emu/x64emu_private.h" #include "gtkclass.h" -const char* gdkx112Name = "libgdk-x11-2.0.so.0"; +#ifdef ANDROID + const char* gdkx112Name = "libgdk-x11-2.0.so"; +#else + const char* gdkx112Name = "libgdk-x11-2.0.so.0"; +#endif #define LIBNAME gdkx112 static char* libname = NULL; @@ -174,10 +178,17 @@ EXPORT uint32_t my_gdk_threads_add_timeout_full(x64emu_t* emu, int priotity, uin if(box64_nogtk) \ return -1; +#ifdef ANDROID +#define CUSTOM_INIT \ + libname = lib->name; \ + getMy(lib); \ + setNeededLibs(lib, 3, "libgobject-2.0.so", "libgio-2.0.so", "libgdk_pixbuf-2.0.so"); +#else #define CUSTOM_INIT \ libname = lib->name; \ getMy(lib); \ setNeededLibs(lib, 3, "libgobject-2.0.so.0", "libgio-2.0.so.0", "libgdk_pixbuf-2.0.so.0"); +#endif #define CUSTOM_FINI \ freeMy(); \ diff --git a/src/wrapped/wrappedgio2.c b/src/wrapped/wrappedgio2.c index 2556c7b369..07c86969d5 100644 --- a/src/wrapped/wrappedgio2.c +++ b/src/wrapped/wrappedgio2.c @@ -20,7 +20,11 @@ #include "myalign.h" #include "gtkclass.h" -const char* gio2Name = "libgio-2.0.so.0"; +#ifdef ANDROID + const char* gio2Name = "libgio-2.0.so"; +#else + const char* gio2Name = "libgio-2.0.so.0"; +#endif #define LIBNAME gio2 typedef size_t(*LFv_t)(void); @@ -625,11 +629,19 @@ EXPORT void my_g_input_stream_read_async(x64emu_t* emu, void* stream, void* buff if(box64_nogtk) \ return -1; +#ifdef ANDROID +#define CUSTOM_INIT \ + getMy(lib); \ + SetGApplicationID(my->g_application_get_type()); \ + SetGDBusProxyID(my->g_dbus_proxy_get_type()); \ + setNeededLibs(lib, 1, "libgmodule-2.0.so"); +#else #define CUSTOM_INIT \ getMy(lib); \ SetGApplicationID(my->g_application_get_type()); \ SetGDBusProxyID(my->g_dbus_proxy_get_type()); \ setNeededLibs(lib, 1, "libgmodule-2.0.so.0"); +#endif #define CUSTOM_FINI \ freeMy(); diff --git a/src/wrapped/wrappedglib2.c b/src/wrapped/wrappedglib2.c index 9dd59d768d..18ae3f3e93 100644 --- a/src/wrapped/wrappedglib2.c +++ b/src/wrapped/wrappedglib2.c @@ -20,7 +20,11 @@ #include "gtkclass.h" #include "threads.h" -const char* glib2Name = "libglib-2.0.so.0"; +#ifdef ANDROID + const char* glib2Name = "libglib-2.0.so"; +#else + const char* glib2Name = "libglib-2.0.so.0"; +#endif #define LIBNAME glib2 typedef void (*vFppip_t)(void*, void*, int, void*); diff --git a/src/wrapped/wrappedgmodule2.c b/src/wrapped/wrappedgmodule2.c index b5681d4e1b..c926238df3 100644 --- a/src/wrapped/wrappedgmodule2.c +++ b/src/wrapped/wrappedgmodule2.c @@ -12,14 +12,23 @@ #include "librarian/library_private.h" #include "x64emu.h" -const char* gmodule2Name = "libgmodule-2.0.so.0"; +#ifdef ANDROID + const char* gmodule2Name = "libgmodule-2.0.so"; +#else + const char* gmodule2Name = "libgmodule-2.0.so.0"; +#endif #define LIBNAME gmodule2 #define PRE_INIT \ if(box64_nogtk) \ return -1; +#ifdef ANDROID +#define CUSTOM_INIT \ + setNeededLibs(lib, 1, "libglib-2.0.so"); +#else #define CUSTOM_INIT \ setNeededLibs(lib, 1, "libglib-2.0.so.0"); +#endif #include "wrappedlib_init.h" diff --git a/src/wrapped/wrappedgobject2.c b/src/wrapped/wrappedgobject2.c index 2371e01115..190912698d 100644 --- a/src/wrapped/wrappedgobject2.c +++ b/src/wrapped/wrappedgobject2.c @@ -19,7 +19,11 @@ #include "gtkclass.h" #include "myalign.h" -const char* gobject2Name = "libgobject-2.0.so.0"; +#ifdef ANDROID + const char* gobject2Name = "libgobject-2.0.so"; +#else + const char* gobject2Name = "libgobject-2.0.so.0"; +#endif #define LIBNAME gobject2 typedef size_t(*LFv_t)(void); @@ -924,6 +928,17 @@ EXPORT void* my_g_type_value_table_peek(x64emu_t* emu, size_t type) if(box64_nogtk) \ return -1; +#ifdef ANDROID +#define CUSTOM_INIT \ + InitGTKClass(lib->w.bridge); \ + getMy(lib); \ + SetGObjectID(my->g_object_get_type()); \ + SetGInitiallyUnownedID(my->g_initially_unowned_get_type()); \ + SetGTypeName(my->g_type_name); \ + SetGClassPeek(my->g_type_class_peek); \ + SetGTypeParent(my->g_type_parent); \ + setNeededLibs(lib, 1, "libglib-2.0.so"); +#else #define CUSTOM_INIT \ InitGTKClass(lib->w.bridge); \ getMy(lib); \ @@ -933,6 +948,7 @@ EXPORT void* my_g_type_value_table_peek(x64emu_t* emu, size_t type) SetGClassPeek(my->g_type_class_peek); \ SetGTypeParent(my->g_type_parent); \ setNeededLibs(lib, 1, "libglib-2.0.so.0"); +#endif #define CUSTOM_FINI \ FiniGTKClass(); \ diff --git a/src/wrapped/wrappedgtk3.c b/src/wrapped/wrappedgtk3.c index cdc44219ad..7339effa29 100644 --- a/src/wrapped/wrappedgtk3.c +++ b/src/wrapped/wrappedgtk3.c @@ -821,6 +821,34 @@ EXPORT void my3_gtk_tree_store_set(x64emu_t* emu, void* tree, void* iter, uintpt if(box64_nogtk) \ return -1; +#ifdef ANDROID +#define CUSTOM_INIT \ + libname = lib->name; \ + getMy(lib); \ + SETALT(my3_); \ + SetGtkApplicationID(my->gtk_application_get_type()); \ + SetGtkWidget3ID(my->gtk_widget_get_type()); \ + SetGtkFixed3ID(my->gtk_fixed_get_type()); \ + SetGtkContainer3ID(my->gtk_container_get_type()); \ + SetGtkBin3ID(my->gtk_bin_get_type()); \ + SetGtkButton3ID(my->gtk_button_get_type()); \ + SetGtkMenuButton3ID(my->gtk_menu_button_get_type()); \ + SetGtkWindow3ID(my->gtk_window_get_type()); \ + SetGtkApplicationWindowID(my->gtk_application_window_get_type());\ + SetGtkListBoxID(my->gtk_list_box_get_type()); \ + SetGtkListBoxRowID(my->gtk_list_box_row_get_type()); \ + SetGtkTextView3ID(my->gtk_text_view_get_type()); \ + SetGtkGrid3ID(my->gtk_grid_get_type()); \ + SetGtkMisc3ID(my->gtk_misc_get_type()); \ + SetGtkLabel3ID(my->gtk_label_get_type()); \ + SetGtkImage3ID(my->gtk_image_get_type()); \ + SetGtkEventControllerID(my->gtk_event_controller_get_type());\ + SetGtkGestureID(my->gtk_gesture_get_type()); \ + SetGtkGestureSingleID(my->gtk_gesture_single_get_type()); \ + SetGtkGestureLongPressID(my->gtk_gesture_long_press_get_type());\ + SetGtkActionID(my->gtk_action_get_type()); \ + setNeededLibs(lib, 3, "libgdk-3.so", "libpangocairo-1.0.so", "libgio-2.0.so"); +#else #define CUSTOM_INIT \ libname = lib->name; \ getMy(lib); \ @@ -847,6 +875,7 @@ EXPORT void my3_gtk_tree_store_set(x64emu_t* emu, void* tree, void* iter, uintpt SetGtkGestureLongPressID(my->gtk_gesture_long_press_get_type());\ SetGtkActionID(my->gtk_action_get_type()); \ setNeededLibs(lib, 3, "libgdk-3.so.0", "libpangocairo-1.0.so.0", "libgio-2.0.so.0"); +#endif #define CUSTOM_FINI \ freeMy(); diff --git a/src/wrapped/wrappedgtkx112.c b/src/wrapped/wrappedgtkx112.c index 462f924f8c..bb06839d82 100644 --- a/src/wrapped/wrappedgtkx112.c +++ b/src/wrapped/wrappedgtkx112.c @@ -19,7 +19,11 @@ #include "myalign.h" #include "gtkclass.h" -const char* gtkx112Name = "libgtk-x11-2.0.so.0"; +#ifdef ANDROID + const char* gtkx112Name = "libgtk-x11-2.0.so"; +#else + const char* gtkx112Name = "libgtk-x11-2.0.so.0"; +#endif static char* libname = NULL; #define LIBNAME gtkx112 @@ -1188,6 +1192,35 @@ EXPORT void my_gtk_print_job_send(x64emu_t* emu, void* job, void* f, void* data, if(box64_nogtk) \ return -1; +#ifdef ANDROID +#define CUSTOM_INIT \ + libname = lib->name; \ + getMy(lib); \ + SetGtkObjectID(my->gtk_object_get_type()); \ + SetGtkWidget2ID(my->gtk_widget_get_type()); \ + SetGtkContainer2ID(my->gtk_container_get_type()); \ + SetGtkActionID(my->gtk_action_get_type()); \ + SetGtkMisc2ID(my->gtk_misc_get_type()); \ + SetGtkLabel2ID(my->gtk_label_get_type()); \ + SetGtkTreeView2ID(my->gtk_tree_view_get_type()); \ + SetGtkBin2ID(my->gtk_bin_get_type()); \ + SetGtkWindow2ID(my->gtk_window_get_type()); \ + SetGtkTable2ID(my->gtk_table_get_type()); \ + SetGtkFixed2ID(my->gtk_fixed_get_type()); \ + SetGtkButton2ID(my->gtk_button_get_type()); \ + SetGtkComboBox2ID(my->gtk_combo_box_get_type()); \ + SetGtkToggleButton2ID(my->gtk_toggle_button_get_type()); \ + SetGtkCheckButton2ID(my->gtk_check_button_get_type()); \ + SetGtkEntry2ID(my->gtk_entry_get_type()); \ + SetGtkSpinButton2ID(my->gtk_spin_button_get_type()); \ + SetGtkProgress2ID(my->gtk_progress_get_type()); \ + SetGtkProgressBar2ID(my->gtk_progress_bar_get_type()); \ + SetGtkFrame2ID(my->gtk_frame_get_type()); \ + SetGtkMenuShell2ID(my->gtk_menu_shell_get_type()); \ + SetGtkMenuBar2ID(my->gtk_menu_bar_get_type()); \ + SetGtkTextView2ID(my->gtk_text_view_get_type()); \ + setNeededLibs(lib, 2, "libgdk-x11-2.0.so", "libpangocairo-1.0.so"); +#else #define CUSTOM_INIT \ libname = lib->name; \ getMy(lib); \ @@ -1215,6 +1248,7 @@ EXPORT void my_gtk_print_job_send(x64emu_t* emu, void* job, void* f, void* data, SetGtkMenuBar2ID(my->gtk_menu_bar_get_type()); \ SetGtkTextView2ID(my->gtk_text_view_get_type()); \ setNeededLibs(lib, 2, "libgdk-x11-2.0.so.0", "libpangocairo-1.0.so.0"); +#endif #define CUSTOM_FINI \ freeMy(); diff --git a/src/wrapped/wrappedpango.c b/src/wrapped/wrappedpango.c index 438ab7d7d8..d5d0d3bcdc 100644 --- a/src/wrapped/wrappedpango.c +++ b/src/wrapped/wrappedpango.c @@ -17,7 +17,11 @@ #include "box64context.h" #include "emu/x64emu_private.h" -const char* pangoName = "libpango-1.0.so.0"; +#ifdef ANDROID + const char* pangoName = "libpango-1.0.so"; +#else + const char* pangoName = "libpango-1.0.so.0"; +#endif #define LIBNAME pango #include "generated/wrappedpangotypes.h" @@ -96,9 +100,15 @@ EXPORT void my_pango_attribute_init(x64emu_t* emu, void* attr, my_PangoAttrClass if(box64_nogtk) \ return -1; +#ifdef ANDROID +#define CUSTOM_INIT \ + getMy(lib); \ + setNeededLibs(lib, 2, "libgobject-2.0.so", "libglib-2.0.so"); +#else #define CUSTOM_INIT \ getMy(lib); \ setNeededLibs(lib, 2, "libgobject-2.0.so.0", "libglib-2.0.so.0"); +#endif #define CUSTOM_FINI \ freeMy(); diff --git a/src/wrapped/wrappedpangocairo.c b/src/wrapped/wrappedpangocairo.c index d1b2017658..6218fb1f85 100644 --- a/src/wrapped/wrappedpangocairo.c +++ b/src/wrapped/wrappedpangocairo.c @@ -12,11 +12,19 @@ #include "librarian/library_private.h" #include "x64emu.h" -const char* pangocairoName = "libpangocairo-1.0.so.0"; +#ifdef ANDROID + const char* pangocairoName = "libpangocairo-1.0.so"; +#else + const char* pangocairoName = "libpangocairo-1.0.so.0"; +#endif #define LIBNAME pangocairo +#ifdef ANDROID +#define CUSTOM_INIT \ + setNeededLibs(lib, 1, "libpango-1.0.so"); +#else #define CUSTOM_INIT \ setNeededLibs(lib, 1, "libpango-1.0.so.0"); - +#endif #include "wrappedlib_init.h"