Carlos Rafael Giani
2018-07-27 14:01:02 UTC
Currently, the headers from imx-vpu-hantro are installed in the
${includedir} directory, which is /usr/include/ in Yocto.
This is bad, because there are multiple headers, and none of them have
names that are distinguishable enough. There are headers called codec.h,
version.h, util.h for example.
Placing multiple headers into /usr/include/ that belong to a specific
library or package is not good. In the Unix world, it is generally
considered good practice to place such headers in a subdirectory instead.
I would recommend doing that here as well. Let the imx-vpu-hantro recipe
create a "hantro/" or "imx-vpu-hantro/" subdirectory in ${includedir},
and install the headers there. I realize that the imx-vpuwrap and
imx-gst1.0-plugin recipes expect the headers to be in ${includedir}, but
this can be circumvented by adding an include path command line flag to
their CFLAGS. I think this is preferable over keeping these headers in
the main include directory.
Also, the preprocessor definitions that the top level makefile selects
are not specified in any header. Typically, such options are recorded in
something like config.h so that code that uses the library can use
#ifdef to make sure its code matches. For example, there is the
USE_EXTERNAL_BUFFER macro, which is enabled in the toplevel makefile.
This macro enables additional fields in several C structs, so knowing
whether or not imx-vpu-hantro was build with this macro is important.
--
${includedir} directory, which is /usr/include/ in Yocto.
This is bad, because there are multiple headers, and none of them have
names that are distinguishable enough. There are headers called codec.h,
version.h, util.h for example.
Placing multiple headers into /usr/include/ that belong to a specific
library or package is not good. In the Unix world, it is generally
considered good practice to place such headers in a subdirectory instead.
I would recommend doing that here as well. Let the imx-vpu-hantro recipe
create a "hantro/" or "imx-vpu-hantro/" subdirectory in ${includedir},
and install the headers there. I realize that the imx-vpuwrap and
imx-gst1.0-plugin recipes expect the headers to be in ${includedir}, but
this can be circumvented by adding an include path command line flag to
their CFLAGS. I think this is preferable over keeping these headers in
the main include directory.
Also, the preprocessor definitions that the top level makefile selects
are not specified in any header. Typically, such options are recorded in
something like config.h so that code that uses the library can use
#ifdef to make sure its code matches. For example, there is the
USE_EXTERNAL_BUFFER macro, which is enabled in the toplevel makefile.
This macro enables additional fields in several C structs, so knowing
whether or not imx-vpu-hantro was build with this macro is important.
--