1
0
forked from vitrine/wmaker

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

This commit is contained in:
2026-04-18 19:54:08 -04:00
parent abd24dd745
commit 784e896fad
4 changed files with 35 additions and 6 deletions

2
.gitignore vendored
View File

@@ -155,6 +155,8 @@ 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/constants.rs
WINGs/wings-rs/src/WINGsP/mod.rs
wmaker-rs/Cargo.lock
wrlib-rs/src/ffi.rs
wrlib-rs/Cargo.lock

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

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

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;