diff --git a/CMakeLists.txt b/CMakeLists.txt index 9b2ba4f44f..f2571e824b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -646,7 +646,7 @@ if(WIN32) else() if(NOT ANDROID) if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - check_lib(GLEW GLEW GL/glew.h) + include(FindGLEW) endif() if(NOT GLEW_FOUND) message("Using static GLEW from Externals") diff --git a/CMakeTests/FindGLEW.cmake b/CMakeTests/FindGLEW.cmake new file mode 100644 index 0000000000..33c60d0439 --- /dev/null +++ b/CMakeTests/FindGLEW.cmake @@ -0,0 +1,35 @@ +include(FindPkgConfig OPTIONAL) + +# This is a hack to deal with Ubuntu's mess. +# Ubuntu's version of glew is 1.8, but they have patched in most of glew 1.9. +# So Ubuntu's version works for dolphin. +macro(test_glew) + set(CMAKE_REQUIRED_INCLUDES ${GLEW_INCLUDE_DIRS}) + set(CMAKE_REQUIRED_LIBRARIES GLEW) + check_cxx_source_runs(" + #include + int main() + { + #ifdef GLEW_ARB_shader_image_load_store + return 0; + #else + return 1; + #endif + }" + GLEW_HAS_1_9_METHODS) +endmacro() + +if(PKG_CONFIG_FOUND AND NOT ${var}_FOUND) + pkg_search_module(GLEW REQUIRED glew>=1.8) +endif() + +if(GLEW_FOUND) + test_glew() + if (GLEW_HAS_1_9_METHODS) + include_directories(${GLEW_INCLUDE_DIRS}) + message("GLEW found") + else() + set($GLEW_FOUND 0 CACHE INTERNAL "") + message(FATAL_ERROR "A version of GLEW with the required methods was not found") + endif() +endif()