diff mbox

[v3] CMake: define GBM_BO_MAP only when symbol is found

Message ID 1494892443-9912-1-git-send-email-daniel.diaz@linaro.org
State Superseded
Headers show

Commit Message

Daniel Díaz May 15, 2017, 11:54 p.m. UTC
gbm_bo_map() and _unmap() have been added recently to Mesa,
and this update may not have reached all implementations of
GBM, such as the one provided by Mali r6, where said
definitions can be found in the header file but not in the
library itself. This leads to errors like the following when
linking:
  ../../../../lib/libpiglitutil_gl.so.0: undefined reference to `gbm_bo_unmap'
  ../../../../lib/libpiglitutil_gl.so.0: undefined reference to `gbm_bo_map'
  collect2: error: ld returned 1 exit status
  make[2]: *** [bin/point-sprite] Error 1

Instead of relying on the header file, actually try to link
using that symbol to determine if PIGLIT_HAS_GBM_BO_MAP
should be defined.

Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>
---
v2: Use CHECK_SYMBOL_EXISTS as suggested by Jan Vesely.
v3: Back to CHECK_FUNCTION_EXISTS.

 CMakeLists.txt | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Jan Vesely May 16, 2017, 12:38 a.m. UTC | #1
On Mon, 2017-05-15 at 18:54 -0500, Daniel Díaz wrote:
> gbm_bo_map() and _unmap() have been added recently to Mesa,

> and this update may not have reached all implementations of

> GBM, such as the one provided by Mali r6, where said

> definitions can be found in the header file but not in the

> library itself. This leads to errors like the following when

> linking:

>   ../../../../lib/libpiglitutil_gl.so.0: undefined reference to `gbm_bo_unmap'

>   ../../../../lib/libpiglitutil_gl.so.0: undefined reference to `gbm_bo_map'

>   collect2: error: ld returned 1 exit status

>   make[2]: *** [bin/point-sprite] Error 1

> 

> Instead of relying on the header file, actually try to link

> using that symbol to determine if PIGLIT_HAS_GBM_BO_MAP

> should be defined.

> 

> Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>

> ---

> v2: Use CHECK_SYMBOL_EXISTS as suggested by Jan Vesely.

> v3: Back to CHECK_FUNCTION_EXISTS.


yeah, sorry about that. Since we know that it's a function it does not
really matter.

> 

>  CMakeLists.txt | 5 +++--

>  1 file changed, 3 insertions(+), 2 deletions(-)

> 

> diff --git a/CMakeLists.txt b/CMakeLists.txt

> index a4ff99e..b9e5050 100644

> --- a/CMakeLists.txt

> +++ b/CMakeLists.txt

> @@ -141,8 +141,9 @@ IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")

>  	if(GBM_FOUND)

>  		set(PIGLIT_HAS_GBM True)

>  		add_definitions(-DPIGLIT_HAS_GBM)

> -		if (GBM_VERSION VERSION_EQUAL "12.1" OR GBM_VERSION VERSION_GREATER "12.1")

> -			set(PIGLIT_HAS_GBM_BO_MAP True)

The variable is checked in DMA_BUF build condition ^^
> +		set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} gbm)

It'd be nicer/cleaner to use ${GBM_LIBRARIES} instead of 'gbm'

Jan
> +		CHECK_FUNCTION_EXISTS(gbm_bo_map PIGLIT_HAS_GBM_BO_MAP)

> +		if (PIGLIT_HAS_GBM_BO_MAP)

>  			add_definitions(-DPIGLIT_HAS_GBM_BO_MAP)

>  		endif()

>  	endif(GBM_FOUND)
diff mbox

Patch

diff --git a/CMakeLists.txt b/CMakeLists.txt
index a4ff99e..b9e5050 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -141,8 +141,9 @@  IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
 	if(GBM_FOUND)
 		set(PIGLIT_HAS_GBM True)
 		add_definitions(-DPIGLIT_HAS_GBM)
-		if (GBM_VERSION VERSION_EQUAL "12.1" OR GBM_VERSION VERSION_GREATER "12.1")
-			set(PIGLIT_HAS_GBM_BO_MAP True)
+		set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} gbm)
+		CHECK_FUNCTION_EXISTS(gbm_bo_map PIGLIT_HAS_GBM_BO_MAP)
+		if (PIGLIT_HAS_GBM_BO_MAP)
 			add_definitions(-DPIGLIT_HAS_GBM_BO_MAP)
 		endif()
 	endif(GBM_FOUND)