Message ID | 1494530251-17160-1-git-send-email-daniel.diaz@linaro.org |
---|---|
State | Superseded |
Headers | show |
On Thu, 2017-05-11 at 14:17 -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> > --- > CMakeLists.txt | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/CMakeLists.txt b/CMakeLists.txt > index a4ff99e..136cc21 100644 > --- a/CMakeLists.txt > +++ b/CMakeLists.txt > @@ -141,10 +141,14 @@ 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(OLD_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) > + 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() > + set(CMAKE_REQUIRED_LIBRARIES ${OLD_REQUIRED_LIBRARIES}) > + wouldn't it be cleaner to use CheckSymbolExists(gbm_bo_map GBM_HEADERS PIGLIT_HAS_GBM_BO_MAP) instead of the autostyle detection? Jan > endif(GBM_FOUND) > > pkg_check_modules(WAYLAND QUIET wayland-client wayland-egl)
Hello! On 11 May 2017 at 14:56, Jan Vesely <jan.vesely@rutgers.edu> wrote: > wouldn't it be cleaner to use CheckSymbolExists(gbm_bo_map GBM_HEADERS > PIGLIT_HAS_GBM_BO_MAP) > instead of the autostyle detection? Thanks for the suggestion. That didn't work for me in a previous attempt (with the wrong headers, apparently). Just validated and will submit a new version of the patch shortly. Greetings! Daniel Díaz daniel.diaz@linaro.org
diff --git a/CMakeLists.txt b/CMakeLists.txt index a4ff99e..136cc21 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -141,10 +141,14 @@ 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(OLD_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) + 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() + set(CMAKE_REQUIRED_LIBRARIES ${OLD_REQUIRED_LIBRARIES}) + endif(GBM_FOUND) pkg_check_modules(WAYLAND QUIET wayland-client wayland-egl)
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> --- CMakeLists.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)