Generate a distinct FFI module for constants in WINGs C headers.

This commit is contained in:
2026-04-18 20:18:01 -04:00
parent abd24dd745
commit a48dd05549
5 changed files with 49 additions and 6 deletions
+1
View File
@@ -155,6 +155,7 @@ WPrefs.app/WPrefs.desktop
WINGs/wings-rs-tests/Cargo.lock
WINGs/wings-rs/Cargo.lock
WINGs/wings-rs/src/WINGsP.rs
WINGs/wings-rs/src/WINGsP/mod.rs
wmaker-rs/Cargo.lock
wrlib-rs/src/ffi.rs
wrlib-rs/Cargo.lock
+16 -5
View File
@@ -1,7 +1,8 @@
AUTOMAKE_OPTIONS =
RUST_SRC = \
src/WINGsP.rs \
src/WINGsP/constants.rs \
src/WINGsP/mod.rs \
src/button.rs \
src/color.rs \
src/configuration.rs \
@@ -18,8 +19,9 @@ RUST_EXTRA = \
Cargo.lock \
Cargo.toml
src/WINGsP.rs: ../WINGs/WINGsP.h ../../wrlib/wraster.h ../WINGs/WINGs.h ../WINGs/WUtil.h Makefile patch_WINGsP.sed
$(BINDGEN) ../WINGs/WINGsP.h \
src/WINGsP/mod.rs: ../WINGs/WINGsP.h ../../wrlib/wraster.h ../WINGs/WINGs.h ../WINGs/WUtil.h Makefile patch_WINGsP.sed
mkdir -p src/WINGsP \
&& $(BINDGEN) ../WINGs/WINGsP.h \
--no-recursive-allowlist \
--allowlist-type "^W_.+|^WM(View|Array|DragOperationType|Point|Data|OpenPanel|SavePanel|HashTable|DraggingInfo|SelectionProcs|Rect|EventProc|Widget|Size|Pixmap|FilePanel|List|ListItem)" \
--allowlist-type "^WM(FontPanel|Screen|Button)" \
@@ -52,11 +54,18 @@ src/WINGsP.rs: ../WINGs/WINGsP.h ../../wrlib/wraster.h ../WINGs/WINGs.h ../WINGs
--allowlist-item "^WMAlignment" \
--allowlist-item "^WMReliefType" \
--allowlist-function "^WM(Create|Release|Draw)Pixmap|^WMCreate(|Blended|ScaledBlended)PixmapFromFile|^WMCreate(|Blended)PixmapFromRImage" \
-o src/WINGsP.rs -- \
-o src/WINGsP/mod.rs -- \
@PANGO_CFLAGS@ \
-I../../wrlib \
-I.. \
&& sed -i -r -f patch_WINGsP.sed src/WINGsP.rs
&& sed -i -r -f patch_WINGsP.sed src/WINGsP/mod.rs
src/WINGsP/constants.rs: src/WINGsP src/defines.h ../WINGs/WINGs.h Makefile
$(BINDGEN) src/defines.h \
--allowlist-type WSystemIcon \
-o src/WINGsP/constants.rs -- \
-I../../wrlib \
-I..
Cargo.lock:
$(CARGO) build
@@ -70,5 +79,7 @@ check-local:
clean-local:
$(CARGO) clean
rm -f src/WINGsP.rs
rm -f src/WINGsP/constants.rs
rm -f src/WINGsP/mod.rs
all: target/debug/libwings_rs.so
+1 -1
View File
@@ -4,7 +4,7 @@
# - The opaque type names _XftDraw and _XftFont are replaced with void*.
# - Pango bindings aren't yet pulled into our Rust code, so PangoLayout is also demoted to void*.
1s/^/use wrlib_rs::ffi::*;\nuse wutil_rs::range::ffi::*;\nuse x11::xlib::*;\nuse crate::ffi::*;\n\n/
1s/^/use wrlib_rs::ffi::*;\nuse wutil_rs::range::ffi::*;\nuse x11::xlib::*;\nuse crate::ffi::*;\n\npub mod constants;\n\n/
s/_XftDraw/::std::ffi::c_void/g
s/_XftFont/::std::ffi::c_void/g
s/PangoLayout/::std::ffi::c_void/g
+15
View File
@@ -0,0 +1,15 @@
/* automatically generated by rust-bindgen 0.72.1 */
pub const WSystemIcon_ReturnArrow: WSystemIcon = 1;
pub const WSystemIcon_HighlightedReturnArrow: WSystemIcon = 2;
pub const WSystemIcon_ScrollerDimple: WSystemIcon = 3;
pub const WSystemIcon_ArrowLeft: WSystemIcon = 4;
pub const WSystemIcon_HighlightedArrowLeft: WSystemIcon = 5;
pub const WSystemIcon_ArrowRight: WSystemIcon = 6;
pub const WSystemIcon_HighlightedArrowRight: WSystemIcon = 7;
pub const WSystemIcon_ArrowUp: WSystemIcon = 8;
pub const WSystemIcon_HighlightedArrowUp: WSystemIcon = 9;
pub const WSystemIcon_ArrowDown: WSystemIcon = 10;
pub const WSystemIcon_HighlightedArrowDown: WSystemIcon = 11;
pub const WSystemIcon_CheckMark: WSystemIcon = 12;
pub type WSystemIcon = ::std::os::raw::c_uint;
+16
View File
@@ -0,0 +1,16 @@
#include "../../WINGs/WINGs.h"
typedef enum {
ReturnArrow = WSIReturnArrow,
HighlightedReturnArrow = WSIHighlightedReturnArrow,
ScrollerDimple = WSIScrollerDimple,
ArrowLeft = WSIArrowLeft,
HighlightedArrowLeft = WSIHighlightedArrowLeft,
ArrowRight = WSIArrowRight,
HighlightedArrowRight = WSIHighlightedArrowRight,
ArrowUp = WSIArrowUp,
HighlightedArrowUp = WSIHighlightedArrowUp,
ArrowDown = WSIArrowDown,
HighlightedArrowDown = WSIHighlightedArrowDown,
CheckMark = WSICheckMark,
} WSystemIcon;