meshlab/src/external/glew.cmake
Ryan Pavlik bb15e2287f Modularize build system usage of dependencies.
Must check for the existence of a bundled dep before we use it,
since e.g. Debian has to strip some files for license and policy reasons.
2020-12-02 12:20:42 -06:00

51 lines
2.0 KiB
CMake

# Copyright 2019, 2020, Collabora, Ltd.
# Copyright 2019, 2020, Visual Computing Lab, ISTI - Italian National Research Council
# SPDX-License-Identifier: BSL-1.0
option(ALLOW_BUNDLED_GLEW "Allow use of bundled GLEW source" ON)
option(ALLOW_SYSTEM_GLEW "Allow use of system-provided GLEW" ON)
unset(HAVE_SYSTEM_GLEW)
if(DEFINED GLEW_VERSION)
if((TARGET GLEW::GLEW) AND (${GLEW_VERSION} VERSION_GREATER_EQUAL "2.0.0"))
set(HAVE_SYSTEM_GLEW TRUE)
endif()
endif()
if(ALLOW_SYSTEM_GLEW AND HAVE_SYSTEM_GLEW)
message(STATUS "- glew - using system-provided library")
add_library(external-glew INTERFACE)
target_link_libraries(external-glew INTERFACE GLEW::GLEW)
if(TARGET OpenGL::OpenGL)
target_link_libraries(external-glew INTERFACE OpenGL::OpenGL)
elseif(TARGET OpenGL::GL)
target_link_libraries(external-glew INTERFACE OpenGL::GL)
else()
message(FATAL_ERROR "OpenGL not found or your CMake version is too old!")
endif()
elseif(ALLOW_BUNDLED_GLEW AND EXISTS "${GLEW_DIR}/src/glew.c")
message(STATUS "- glew - using bundled source")
add_library(external-glew STATIC "${GLEW_DIR}/src/glew.c")
target_compile_definitions(external-glew PUBLIC GLEW_STATIC)
target_include_directories(external-glew SYSTEM PUBLIC ${GLEW_DIR}/include)
if(TARGET OpenGL::OpenGL)
target_link_libraries(external-glew PUBLIC OpenGL::OpenGL)
elseif(TARGET OpenGL::GL)
target_link_libraries(external-glew PUBLIC OpenGL::GL)
else()
message(FATAL_ERROR "OpenGL not found or your CMake version is too old!")
endif()
if(TARGET OpenGL::GLX)
target_link_libraries(external-glew PUBLIC OpenGL::GLX)
endif()
set_property(TARGET external-glew PROPERTY FOLDER External)
# TODO not sure what this was for, but it's almost certainly wrong on at least one compiler
# since it's not in a compiler conditional.
# target_compile_options(external-glew PRIVATE -w)
else()
message(
FATAL_ERROR
"GLEW is required - at least one of ALLOW_SYSTEM_GLEW or ALLOW_BUNDLED_GLEW must be enabled and found.")
endif()