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

This commit is contained in:
2026-06-23 09:42:35 -04:00
parent 0d5986bb89
commit 6a4cb9977e
4 changed files with 37 additions and 5 deletions
+2
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
+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/mod.rs 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
+3
View File
@@ -1,5 +1,8 @@
# This file provides ad-hoc fixups to the WINGsP bindings provided by bindgen.
# Rust submodules.
1s/^/pub mod constants;\n/
# Import Xlib symbols so that everything compiles.
1s/^/\nuse x11::xlib::*;/
+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;