userland: Fix build with clang compiler

ends up with some warning cleanups and extern inline semantics changes

Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Khem Raj 2015-08-23 14:34:38 -07:00 committed by Andrei Gherzan
parent 32d0936570
commit 4db634bcda
4 changed files with 298 additions and 2 deletions

View File

@ -0,0 +1,44 @@
From 5cfb274f036726a85bb45fd82652d55f50208954 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 23 Aug 2015 13:17:33 -0700
Subject: [PATCH 05/16] user-vcsm: Fix build with clang
/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/host_applications/linux/libs/sm/user-vcsm.c:316:36: error: implicit conversion from enumeration
type 'enum vmcs_sm_cache_e' to different enumeration type 'VCSM_CACHE_TYPE_T' [-Werror,-Wenum-conversion]
return vcsm_malloc_cache( size, VMCS_SM_CACHE_NONE, name );
~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~
/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/host_applications/linux/libs/sm/user-vcsm.c:339:22: error: equality comparison with extraneous
parentheses [-Werror,-Wparentheses-equality]
if ( (vcsm_handle == VCSM_INVALID_HANDLE) )
~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
host_applications/linux/libs/sm/user-vcsm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/host_applications/linux/libs/sm/user-vcsm.c b/host_applications/linux/libs/sm/user-vcsm.c
index 4e78dc4..5298f25 100644
--- a/host_applications/linux/libs/sm/user-vcsm.c
+++ b/host_applications/linux/libs/sm/user-vcsm.c
@@ -313,7 +313,7 @@ unsigned int vcsm_malloc_cache( unsigned int size, VCSM_CACHE_TYPE_T cache, char
*/
unsigned int vcsm_malloc( unsigned int size, char *name )
{
- return vcsm_malloc_cache( size, VMCS_SM_CACHE_NONE, name );
+ return vcsm_malloc_cache( size, (VCSM_CACHE_TYPE_T)VMCS_SM_CACHE_NONE, name );
}
/* Shares an allocated block of memory.
@@ -336,7 +336,7 @@ unsigned int vcsm_malloc_share( unsigned int handle )
void *usr_ptr = NULL;
int rc;
- if ( (vcsm_handle == VCSM_INVALID_HANDLE) )
+ if ( vcsm_handle == VCSM_INVALID_HANDLE )
{
vcos_log_error( "[%s]: [%d]: NULL size or invalid device!",
__func__,
--
2.7.0

View File

@ -0,0 +1,166 @@
From ecfa07e3b8019983f3c0f3317d27785666b35f04 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 23 Aug 2015 10:43:37 -0700
Subject: [PATCH 06/16] Fix enum type conversion warnings
/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_util_params_video.c:59:30: error: implicit conversion from enumeration type 'OMX_DISPLAYTRANSFORMTYPE' (aka 'enum OMX_DISPLAYTRANSFORMTYPE') to different enumeration type 'MMAL_DISPLAYTRANSFORM_T' (aka 'enum MMAL_DISPLAYTRANSFORM_T') [-Werror,-Wenum-conversion]
mmal->transform = omx->transform;
~ ~~~~~^~~~~~~~~
/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_util_params_video.c:63:25: error: implicit conversion from enumeration type 'OMX_DISPLAYMODETYPE' (aka 'enum OMX_DISPLAYMODETYPE') to different enumeration type 'MMAL_DISPLAYMODE_T' (aka 'enum MMAL_DISPLAYMODE_T') [-Werror,-Wenum-conversion]
mmal->mode = omx->mode;
~ ~~~~~^~~~
/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_util_params_video.c:75:31: error: implicit conversion from enumeration type 'MMAL_DISPLAYTRANSFORM_T' (aka 'enum MMAL_DISPLAYTRANSFORM_T') to different enumeration type 'OMX_DISPLAYTRANSFORMTYPE' (aka 'enum OMX_DISPLAYTRANSFORMTYPE') [-Werror,-Wenum-conversion]
omx->transform = mmal->transform;
~ ~~~~~~^~~~~~~~~
/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_util_params_video.c:79:31: error: implicit conversion from enumeration type 'MMAL_DISPLAYMODE_T' (aka 'enum MMAL_DISPLAYMODE_T') to different enumeration type 'OMX_DISPLAYMODETYPE' (aka 'enum OMX_DISPLAYMODETYPE') [-Werror,-Wenum-conversion]
omx->mode = mmal->mode;
~ ~~~~~~^~~~
/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/vc/mmal_vc_client.c:102:13: error: implicit conversion from enumeration type
'VCOS_STATUS_T' to different enumeration type 'MMAL_STATUS_T' [-Werror,-Wenum-conversion]
status = vcos_semaphore_create(&waitpool->sem, VCOS_FUNCTION,
~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/vc/mmal_vc_client.c:110:16: error: implicit conversion from enumeration type
'VCOS_STATUS_T' to different enumeration type 'MMAL_STATUS_T' [-Werror,-Wenum-conversion]
status = vcos_semaphore_create(&waitpool->waiters[i].sem,
~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_core.c:284:17: error: implicit conversion from enumeration
type 'MMAL_STATUS_T' to different enumeration type 'OMX_ERRORTYPE' (aka 'enum OMX_ERRORTYPE') [-Werror,-Wenum-conversion]
return mmalomx_get_port_settings(port, param);
~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_core.c:478:17: error: implicit conversion from enumeration
type 'MMAL_STATUS_T' to different enumeration type 'OMX_ERRORTYPE' (aka 'enum OMX_ERRORTYPE') [-Werror,-Wenum-conversion]
return mmalomx_set_port_settings(port, param);
~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_parameters.c:173:14: error: implicit conversion from
enumeration type 'MMAL_STATUS_T' to different enumeration type 'OMX_ERRORTYPE' (aka 'enum OMX_ERRORTYPE') [-Werror,-Wenum-conversion]
return xlat->fn.custom(MMALOMX_PARAM_MAPPING_TO_OMX, xlat, mmal_header,
~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_parameters.c:557:17: error: implicit conversion from
enumeration type 'MMAL_STATUS_T' to different enumeration type 'OMX_ERRORTYPE' (aka 'enum OMX_ERRORTYPE') [-Werror,-Wenum-conversion]
return mmal_port_format_commit(port->mmal);
~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_parameters.c:564:17: error: implicit conversion from
enumeration type 'MMAL_STATUS_T' to different enumeration type 'OMX_ERRORTYPE' (aka 'enum OMX_ERRORTYPE') [-Werror,-Wenum-conversion]
return mmal_port_format_commit(port->mmal);
~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
interface/mmal/openmaxil/mmalomx_core.c | 4 ++--
interface/mmal/openmaxil/mmalomx_parameters.c | 6 +++---
interface/mmal/openmaxil/mmalomx_util_params_video.c | 8 ++++----
interface/mmal/vc/mmal_vc_client.c | 4 ++--
4 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/interface/mmal/openmaxil/mmalomx_core.c b/interface/mmal/openmaxil/mmalomx_core.c
index da66b0b..3a72a2e 100644
--- a/interface/mmal/openmaxil/mmalomx_core.c
+++ b/interface/mmal/openmaxil/mmalomx_core.c
@@ -281,7 +281,7 @@ static OMX_ERRORTYPE mmalomx_ComponentGetParameter(
{
OMX_PARAM_PORTDEFINITIONTYPE *param = (OMX_PARAM_PORTDEFINITIONTYPE *)pParam;
PARAM_GET_PORT(port, component, param->nPortIndex);
- return mmalomx_get_port_settings(port, param);
+ return (OMX_ERRORTYPE)mmalomx_get_port_settings(port, param);
}
return OMX_ErrorNone;
break;
@@ -475,7 +475,7 @@ static OMX_ERRORTYPE mmalomx_ComponentSetParameter(
{
OMX_PARAM_PORTDEFINITIONTYPE *param = (OMX_PARAM_PORTDEFINITIONTYPE *)pParam;
PARAM_GET_PORT(port, component, param->nPortIndex);
- return mmalomx_set_port_settings(port, param);
+ return (OMX_ERRORTYPE)mmalomx_set_port_settings(port, param);
}
return OMX_ErrorNone;
break;
diff --git a/interface/mmal/openmaxil/mmalomx_parameters.c b/interface/mmal/openmaxil/mmalomx_parameters.c
index a91b68c..f0bd17f 100644
--- a/interface/mmal/openmaxil/mmalomx_parameters.c
+++ b/interface/mmal/openmaxil/mmalomx_parameters.c
@@ -170,7 +170,7 @@ static OMX_ERRORTYPE mmalomx_parameter_get_xlat(MMALOMX_COMPONENT_T *component,
if (xlat->fn.custom)
{
- return xlat->fn.custom(MMALOMX_PARAM_MAPPING_TO_OMX, xlat, mmal_header,
+ return (OMX_ERRORTYPE)xlat->fn.custom(MMALOMX_PARAM_MAPPING_TO_OMX, xlat, mmal_header,
pParam, mmal_port);
}
@@ -554,14 +554,14 @@ OMX_ERRORTYPE mmalomx_parameter_set(MMALOMX_COMPONENT_T *component,
port->mmal->format->es->video.par.num = param->nX;
port->mmal->format->es->video.par.den = param->nY;
mmal_rational_simplify(&port->mmal->format->es->video.par);
- return mmal_port_format_commit(port->mmal);
+ return (OMX_ERRORTYPE)mmal_port_format_commit(port->mmal);
}
case OMX_IndexParamColorSpace:
{
OMX_PARAM_COLORSPACETYPE *param = (OMX_PARAM_COLORSPACETYPE *)pParam;
PARAM_GET_PORT(port, component, param->nPortIndex);
port->mmal->format->es->video.color_space = mmalil_omx_color_space_to_mmal(param->eColorSpace);
- return mmal_port_format_commit(port->mmal);
+ return (OMX_ERRORTYPE)mmal_port_format_commit(port->mmal);
}
case OMX_IndexParamBrcmVideoCroppingDisable:
{
diff --git a/interface/mmal/openmaxil/mmalomx_util_params_video.c b/interface/mmal/openmaxil/mmalomx_util_params_video.c
index f088296..83e3724 100644
--- a/interface/mmal/openmaxil/mmalomx_util_params_video.c
+++ b/interface/mmal/openmaxil/mmalomx_util_params_video.c
@@ -56,11 +56,11 @@ static MMAL_STATUS_T mmalomx_param_mapping_displayregion(MMALOMX_PARAM_MAPPING_D
mmal->set = omx->set;
mmal->display_num = omx->num;
mmal->fullscreen = omx->fullscreen;
- mmal->transform = omx->transform;
+ mmal->transform = (MMAL_DISPLAYTRANSFORM_T)omx->transform;
rect_to_mmal(&mmal->dest_rect, &omx->dest_rect);
rect_to_mmal(&mmal->src_rect, &omx->src_rect);
mmal->noaspect = omx->noaspect;
- mmal->mode = omx->mode;
+ mmal->mode = (MMAL_DISPLAYMODE_T)omx->mode;
mmal->pixel_x = omx->pixel_x;
mmal->pixel_y = omx->pixel_y;
mmal->layer = omx->layer;
@@ -72,11 +72,11 @@ static MMAL_STATUS_T mmalomx_param_mapping_displayregion(MMALOMX_PARAM_MAPPING_D
omx->set = mmal->set;
omx->num = mmal->display_num;
omx->fullscreen = mmal->fullscreen;
- omx->transform = mmal->transform;
+ omx->transform = (OMX_DISPLAYTRANSFORMTYPE)mmal->transform;
rect_to_omx(&omx->dest_rect, &mmal->dest_rect);
rect_to_omx(&omx->src_rect, &mmal->src_rect);
omx->noaspect = mmal->noaspect;
- omx->mode = mmal->mode;
+ omx->mode = (OMX_DISPLAYMODETYPE)mmal->mode;
omx->pixel_x = mmal->pixel_x;
omx->pixel_y = mmal->pixel_y;
omx->layer = mmal->layer;
diff --git a/interface/mmal/vc/mmal_vc_client.c b/interface/mmal/vc/mmal_vc_client.c
index b60544b..bd27fc5 100644
--- a/interface/mmal/vc/mmal_vc_client.c
+++ b/interface/mmal/vc/mmal_vc_client.c
@@ -99,7 +99,7 @@ static MMAL_STATUS_T create_waitpool(MMAL_WAITPOOL_T *waitpool)
MMAL_STATUS_T status;
int i;
- status = vcos_semaphore_create(&waitpool->sem, VCOS_FUNCTION,
+ status = (MMAL_STATUS_T)vcos_semaphore_create(&waitpool->sem, VCOS_FUNCTION,
MAX_WAITERS);
if (status != MMAL_SUCCESS)
return status;
@@ -107,7 +107,7 @@ static MMAL_STATUS_T create_waitpool(MMAL_WAITPOOL_T *waitpool)
for (i=0; i<MAX_WAITERS; i++)
{
waitpool->waiters[i].inuse = 0;
- status = vcos_semaphore_create(&waitpool->waiters[i].sem,
+ status = (MMAL_STATUS_T)vcos_semaphore_create(&waitpool->waiters[i].sem,
"mmal waiter", 0);
if (status != MMAL_SUCCESS)
break;
--
2.7.0

View File

@ -0,0 +1,84 @@
From e60f708bef880542fbe45df7dba982c886852dd4 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 23 Aug 2015 13:41:33 -0700
Subject: [PATCH 07/16] vcos_platform_types: Dont use extern inline with clang
Its very gcc specific implementation here in this code, we cant use
it with clang as such, so we will use static inline instead which is
common across gcc and clang starting c99 std onwards
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
interface/vcos/pthreads/vcos_platform_types.h | 4 ----
interface/vcos/vcos_timer.h | 5 -----
interface/vcos/vcos_types.h | 2 +-
3 files changed, 1 insertion(+), 10 deletions(-)
diff --git a/interface/vcos/pthreads/vcos_platform_types.h b/interface/vcos/pthreads/vcos_platform_types.h
index 64fb381..6ebcaad 100644
--- a/interface/vcos/pthreads/vcos_platform_types.h
+++ b/interface/vcos/pthreads/vcos_platform_types.h
@@ -60,10 +60,6 @@ vcos_pthreads_logging_assert(const char *file, const char *func, unsigned int li
#define VCOS_ASSERT_MSG(...) ((VCOS_ASSERT_LOGGING && !VCOS_ASSERT_LOGGING_DISABLE) ? vcos_pthreads_logging_assert(__FILE__, __func__, __LINE__, __VA_ARGS__) : (void)0)
-#define VCOS_INLINE_BODIES
-#define VCOS_INLINE_DECL extern
-#define VCOS_INLINE_IMPL static __inline__
-
#ifdef __cplusplus
}
#endif
diff --git a/interface/vcos/vcos_timer.h b/interface/vcos/vcos_timer.h
index bdfa657..1de2d46 100644
--- a/interface/vcos/vcos_timer.h
+++ b/interface/vcos/vcos_timer.h
@@ -76,7 +76,6 @@ VCOSPRE_ VCOS_STATUS_T VCOSPOST_ vcos_timer_init(void);
* @param context context passed to expiration routine
*
*/
-VCOS_INLINE_DECL
VCOS_STATUS_T vcos_timer_create(VCOS_TIMER_T *timer,
const char *name,
void (*expiration_routine)(void *context),
@@ -91,24 +90,20 @@ VCOS_STATUS_T vcos_timer_create(VCOS_TIMER_T *timer,
* @param timer timer handle
* @param delay Delay to wait for, in ms
*/
-VCOS_INLINE_DECL
void vcos_timer_set(VCOS_TIMER_T *timer, VCOS_UNSIGNED delay);
/** Stop an already running timer.
*
* @param timer timer handle
*/
-VCOS_INLINE_DECL
void vcos_timer_cancel(VCOS_TIMER_T *timer);
/** Stop a timer and restart it.
* @param timer timer handle
* @param delay delay in ms
*/
-VCOS_INLINE_DECL
void vcos_timer_reset(VCOS_TIMER_T *timer, VCOS_UNSIGNED delay);
-VCOS_INLINE_DECL
void vcos_timer_delete(VCOS_TIMER_T *timer);
#ifdef __cplusplus
diff --git a/interface/vcos/vcos_types.h b/interface/vcos/vcos_types.h
index e64fd99..7d86742 100644
--- a/interface/vcos/vcos_types.h
+++ b/interface/vcos/vcos_types.h
@@ -120,7 +120,7 @@ typedef enum
#if defined(NDEBUG)
-#ifdef __GNUC__
+#if defined(__GNUC__) && !defined(__clang__)
# define VCOS_INLINE_DECL extern
# define VCOS_INLINE_IMPL static __inline__
#else
--
2.7.0

View File

@ -22,8 +22,10 @@ SRC_URI = "\
file://0002-musl-inspired-fixed.patch \ file://0002-musl-inspired-fixed.patch \
file://0003-set-VMCS_INSTALL_PREFIX-to-usr.patch \ file://0003-set-VMCS_INSTALL_PREFIX-to-usr.patch \
file://0004-cmake-generate-and-install-pkgconfig-files.patch \ file://0004-cmake-generate-and-install-pkgconfig-files.patch \
" file://0005-user-vcsm-Fix-build-with-clang.patch \
file://0006-Fix-enum-type-conversion-warnings.patch \
file://0007-vcos_platform_types-Dont-use-extern-inline-with-clan.patch \
"
S = "${WORKDIR}/git" S = "${WORKDIR}/git"
inherit cmake pkgconfig inherit cmake pkgconfig