Hi David, On 9 February 2017 at 22:01, David Gibson <david@xxxxxxxxxxxxxxxxxxxxx> wrote: > On Sun, Feb 05, 2017 at 01:13:22PM -0700, Simon Glass wrote: >> There are a few places where libfdt.h cannot be used as is with swig: >> >> - macros like fdt_totalsize() have to be defined as C declarations >> - fdt_offset_ptr() and fdt_getprop_namelen() need special treatment due to >> a TODO in the wrapper for fdt_getprop() > > fdt_offset_ptr() is a very low-level function which should be rarely > needed outside libfdt internals, even in C. I think it makes sense to > exclude it from the Python interface. Sounds good. > > fdt_getprop_namelen() is primarily to make certain things easier in C > where copying and slicing up strings can be quite painful. Since > that's trivial in Python, I don't think there's any need to expose the > namelen() functions in Python. Yes that's a good point, will drop it. > >> >> The second one can hopefully be resolved by someone with more knowledge of >> SWIG than me. >> >> Add #ifdefs to work around this problem. >> >> Signed-off-by: Simon Glass <sjg@xxxxxxxxxxxx> >> --- >> >> Changes in v4: >> - Add new patch to adjust libfdt.h to work with swig >> >> Changes in v3: None >> Changes in v2: None >> >> libfdt/libfdt.h | 7 ++++++- >> 1 file changed, 6 insertions(+), 1 deletion(-) >> >> diff --git a/libfdt/libfdt.h b/libfdt/libfdt.h >> index c69e918..2e78754 100644 >> --- a/libfdt/libfdt.h >> +++ b/libfdt/libfdt.h >> @@ -143,7 +143,9 @@ >> /* Low-level functions (you probably don't need these) */ >> /**********************************************************************/ >> >> +#ifndef SWIG /* Use a special rule in libfdt.swig instead */ >> const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int checklen); >> +#endif >> static inline void *fdt_offset_ptr_w(void *fdt, int offset, int checklen) >> { >> return (void *)(uintptr_t)fdt_offset_ptr(fdt, offset, checklen); >> @@ -210,7 +212,7 @@ int fdt_next_subnode(const void *fdt, int offset); >> /**********************************************************************/ >> /* General functions */ >> /**********************************************************************/ >> - >> +#ifndef SWIG /* Repeated in libfdt.swig (we cannot use macros) */ > > You need to duplicate them in libfdt.swig, certainly, but why do you > need to explicitly cut them out here? Isn't swig smart enough to know > it can't do anything with these? Because the #define stuffs up my declarations. But it's easy to put the declarations first to avoid that problem, so I'll do that. [..] Regards, Simon -- To unsubscribe from this list: send the line "unsubscribe devicetree-compiler" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html