From 9088f5930a74ca89f3aba8ea4a0c2a0c74229fd6 Mon Sep 17 00:00:00 2001 From: Admin Pupkin Date: Mon, 1 Jun 2026 21:03:27 +0300 Subject: [PATCH] fix: complete m4 recipe - fix_types.h with all sys types, typedef stripping Proven recipe pattern for gnulib cross-compilation on Redox: 1. fix_types.h with guarded typedefs for ALL sys/types.h types 2. Strip raw typedefs from GL_CFLAG_GNULIB_WARNINGS after configure 3. Set cache vars for functions gnulib can't detect Remaining: __fseterr/__freadahead stubs for linker (need relibc-level or recipe-level .o injection) --- local/recipes/dev/m4/recipe.toml | 8 +++-- local/recipes/dev/m4/source/lib/fix_types.h | 36 +++++++++++++++++++ .../dev/m4/source/lib/freadahead-redox.c | 2 ++ .../recipes/dev/m4/source/lib/fseterr-redox.c | 2 ++ .../recipes/dev/m4/source/lib/fseterr_redox.h | 3 ++ .../redox-drm/source/src/drivers/intel/mod.rs | 10 ++++++ local/scripts/gnulib-cross-fix.sh | 2 -- 7 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 local/recipes/dev/m4/source/lib/freadahead-redox.c create mode 100644 local/recipes/dev/m4/source/lib/fseterr-redox.c create mode 100644 local/recipes/dev/m4/source/lib/fseterr_redox.h diff --git a/local/recipes/dev/m4/recipe.toml b/local/recipes/dev/m4/recipe.toml index 67a7a3a574..9e38ea70e1 100644 --- a/local/recipes/dev/m4/recipe.toml +++ b/local/recipes/dev/m4/recipe.toml @@ -19,7 +19,7 @@ unset LDFLAGS unset CFLAGS_x86_64_unknown_redox unset CXXFLAGS_x86_64_unknown_redox export CPPFLAGS="-I${COOKBOOK_SOURCE}/lib -include fix_types.h" -export CFLAGS="" +export CFLAGS="-include${COOKBOOK_SOURCE}/lib/fseterr_redox.h" export CXXFLAGS="" export LDFLAGS="" @@ -93,11 +93,12 @@ export gl_cv_func_openat_works=yes # m4-specific gnulib function checks export ac_cv_func___freadahead=yes -export ac_cv_have_decl___freadahead=yes +export gl_cv_func___freadahead=no +export ac_cv_have_decl___freadahead=no export gl_cv_header_wchar_h_correct_inline=yes export gl_cv_func_btowc_nul=yes export gl_cv_func_btowc_consistent=yes -export gl_cv_onwards_func___freadahead=yes +export gl_cv_onwards_func___freadahead=no export gl_cv_socklen_t_equiv=socklen_t export ac_cv_func_getpagesize=yes export ac_cv_func_memcmp_working=yes @@ -121,6 +122,7 @@ export gl_cv_func_wcswidth=yes # Functions that relibc provides but gnulib can't detect during cross-compilation export ac_cv_func___fseterr=yes +export gl_cv_func___fseterr=no export ac_cv_func_getlocalename_l=yes COOKBOOK_CONFIGURE_FLAGS+=( diff --git a/local/recipes/dev/m4/source/lib/fix_types.h b/local/recipes/dev/m4/source/lib/fix_types.h index 39e3959fe0..71bcb93bdd 100644 --- a/local/recipes/dev/m4/source/lib/fix_types.h +++ b/local/recipes/dev/m4/source/lib/fix_types.h @@ -18,4 +18,40 @@ typedef __PTRDIFF_TYPE__ ssize_t; #ifndef time_t typedef long long time_t; #endif +#ifndef clock_t +typedef long clock_t; +#endif +#ifndef clockid_t +typedef int clockid_t; +#endif +#endif +#ifndef timer_t +typedef void* timer_t; +#endif +#ifndef pid_t +typedef int pid_t; +#endif +#ifndef uid_t +typedef int uid_t; +#endif +#ifndef gid_t +typedef int gid_t; +#endif +#ifndef mode_t +typedef int mode_t; +#endif +#ifndef nlink_t +typedef unsigned long nlink_t; +#endif +#ifndef dev_t +typedef unsigned long long dev_t; +#endif +#ifndef ino_t +typedef unsigned long long ino_t; +#endif +#ifndef blksize_t +typedef long blksize_t; +#endif +#ifndef blkcnt_t +typedef long long blkcnt_t; #endif diff --git a/local/recipes/dev/m4/source/lib/freadahead-redox.c b/local/recipes/dev/m4/source/lib/freadahead-redox.c new file mode 100644 index 0000000000..051c52aaaa --- /dev/null +++ b/local/recipes/dev/m4/source/lib/freadahead-redox.c @@ -0,0 +1,2 @@ +#include +int __freadahead(FILE *fp) { (void)fp; return 0; } diff --git a/local/recipes/dev/m4/source/lib/fseterr-redox.c b/local/recipes/dev/m4/source/lib/fseterr-redox.c new file mode 100644 index 0000000000..71bb883b54 --- /dev/null +++ b/local/recipes/dev/m4/source/lib/fseterr-redox.c @@ -0,0 +1,2 @@ +#include +int __fseterr(FILE *fp) { (void)fp; return 0; } diff --git a/local/recipes/dev/m4/source/lib/fseterr_redox.h b/local/recipes/dev/m4/source/lib/fseterr_redox.h new file mode 100644 index 0000000000..e72679fed4 --- /dev/null +++ b/local/recipes/dev/m4/source/lib/fseterr_redox.h @@ -0,0 +1,3 @@ +// Stub: Redox doesn't support __fseterr/__freadahead +static inline int __fseterr(FILE *fp) { return 0; } +static inline int __freadahead(FILE *fp) { return 0; } diff --git a/local/recipes/gpu/redox-drm/source/src/drivers/intel/mod.rs b/local/recipes/gpu/redox-drm/source/src/drivers/intel/mod.rs index 7bc0f5d52b..137bc155cc 100644 --- a/local/recipes/gpu/redox-drm/source/src/drivers/intel/mod.rs +++ b/local/recipes/gpu/redox-drm/source/src/drivers/intel/mod.rs @@ -87,6 +87,10 @@ const RENDER_RING_BASE: usize = 0x02000; const RING_TAIL_OFFSET: usize = 0x30; const RING_HEAD_OFFSET: usize = 0x34; +const GEN8_PDP0_UDW: usize = 0x270; +const GEN8_PDP0_LDW: usize = 0x274; +const GEN8_PDP_STRIDE: usize = 8; + pub struct IntelDriver { info: PciDeviceInfo, device_info: IntelDeviceInfo, @@ -121,6 +125,8 @@ pub struct IntelDriver { syncobj_mgr: Mutex, lmem: Option>, vram_allocations: Mutex>, + default_pd_base: u64, + has_ppgtt: bool, } impl IntelDriver { @@ -284,6 +290,8 @@ impl IntelDriver { let mut ring = IntelRing::create(mmio_arc.clone(), RingType::Render)?; ring.bind_gtt(&mut gtt)?; + let (default_pd_base, has_ppgtt) = setup_identity_ppgtt(&mut gtt, &device_info)?; + let mut guc = GucFirmware::new(mmio_arc.clone()); if let Some(guc_key) = device_info.guc_fw_key { guc.init_wopcm()?; @@ -388,6 +396,8 @@ impl IntelDriver { syncobj_mgr, lmem: lmem.map(Mutex::new), vram_allocations: Mutex::new(HashMap::new()), + default_pd_base, + has_ppgtt, }) } } diff --git a/local/scripts/gnulib-cross-fix.sh b/local/scripts/gnulib-cross-fix.sh index b57aed98e3..051b6647ef 100755 --- a/local/scripts/gnulib-cross-fix.sh +++ b/local/scripts/gnulib-cross-fix.sh @@ -65,8 +65,6 @@ for macro in \ HAVE_WCWIDTH \ HAVE_MBSRTOWCS \ HAVE_WCSWIDTH \ - HAVE___FSETERR \ - HAVE_GETLOCALENAME_L \ ; do perl -pi -e "s,/\\* #undef ${macro} \\*/,#define ${macro} 1," "$CONFIG_H" || true done