mirror of
https://github.com/Perlmint/glew-cmake.git
synced 2025-03-20 15:56:16 +00:00
Modernize cmake
This commit is contained in:
parent
b7aa06157b
commit
a79115599b
@ -14,7 +14,7 @@ include("GeneratePkgConfig.cmake")
|
||||
option(glew-cmake_BUILD_SHARED "Build the shared glew library" ON)
|
||||
option(glew-cmake_BUILD_STATIC "Build the static glew library" ON)
|
||||
option(USE_GLU "Use GLU" OFF)
|
||||
option(PKG_CONFIG_REPRESENTATIVE_TARGET "Generate pc file for specified target as glew. libglew_static|libglewmx_static|libglew_shared|libglewmx_shared" OFF)
|
||||
option(PKG_CONFIG_REPRESENTATIVE_TARGET "Generate pc file for specified target as glew. libglew_static|libglew_shared" OFF)
|
||||
option(ONLY_LIBS "Do not build executables" OFF)
|
||||
|
||||
file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/config/version _VERSION_MAJOR_STRING REGEX "GLEW_MAJOR[ ]*=[ ]*[0-9]+.*")
|
||||
@ -36,31 +36,56 @@ if(MSVC)
|
||||
list(APPEND LIBGLEW_SRCS ${RC_DIR}/glew.rc)
|
||||
endif()
|
||||
|
||||
# Use namespaced libraries when supported
|
||||
if(${CMAKE_VERSION} VERSION_GREATER 3.14)
|
||||
set(USE_NAMESPACED_LIB YES)
|
||||
else()
|
||||
set(USE_NAMESPACED_LIB NO)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0072)
|
||||
set(OpenGL_GL_PREFERENCE LEGACY)
|
||||
set(OpenGL_GL_PREFERENCE GLVND)
|
||||
endif()
|
||||
|
||||
find_package(OpenGL REQUIRED)
|
||||
|
||||
set(pc_requires)
|
||||
|
||||
if(NOT USE_GLU)
|
||||
list(APPEND DEFINITIONS -DGLEW_NO_GLU)
|
||||
set(pc_requires)
|
||||
else()
|
||||
set(pc_requires REQUIRES glu)
|
||||
list(APPEND LIBRARIES OpenGL::GLU)
|
||||
if(NOT OPENGL_GLU_FOUND)
|
||||
message(FATAL_ERROR "GLU is not found. but GLU option is enabled")
|
||||
endif()
|
||||
endif( )
|
||||
|
||||
if(WIN32)
|
||||
list(APPEND LIBRARIES opengl32)
|
||||
elseif(APPLE)
|
||||
find_library(GL_LIBRARY OpenGL)
|
||||
find_library(AGL_LIBRARY AGL)
|
||||
list(APPEND LIBRARIES ${GL_LIBRARY} ${AGL_LIBRARY})
|
||||
list(APPEND pc_requires glu)
|
||||
|
||||
if(USE_NAMESPACED_LIB)
|
||||
list(APPEND LIBRARIES OpenGL::GLU)
|
||||
else()
|
||||
list(APPEND LIBRARIES OPENGL_glu_LIBRARY)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
list(APPEND pc_requires gl)
|
||||
if(USE_NAMESPACED_LIB)
|
||||
list(APPEND LIBRARIES OpenGL::GL)
|
||||
else()
|
||||
list(APPEND LIBRARIES GL X11 dl Xext)
|
||||
list(APPEND LIBRARIES OPENGL_opengl_LIBRARY)
|
||||
endif()
|
||||
|
||||
if(APPLE)
|
||||
find_library(AGL_LIBRARY AGL)
|
||||
list(APPEND LIBRARIES ${AGL_LIBRARY})
|
||||
elseif(NOT WIN32)
|
||||
find_package(X11 REQUIRED)
|
||||
|
||||
list(APPEND pc_requires x11 xext)
|
||||
if(USE_NAMESPACED_LIB)
|
||||
list(APPEND LIBRARIES X11::X11 X11::Xext)
|
||||
else()
|
||||
list(APPEND LIBRARIES X11_X11_LIB X11_Xext_LIB)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(GLEW_TARGETS)
|
||||
@ -72,10 +97,7 @@ if(glew-cmake_BUILD_STATIC)
|
||||
OUTPUT_NAME "glew"
|
||||
DEBUG_POSTFIX d)
|
||||
|
||||
target_include_directories(libglew_static PUBLIC ${INCLUDE_DIR})
|
||||
target_compile_definitions(libglew_static PUBLIC GLEW_STATIC ${DEFINITIONS})
|
||||
target_link_libraries(libglew_static ${LIBRARIES} )
|
||||
set_target_properties(libglew_static PROPERTIES VERSION ${GLEW_VERSION})
|
||||
target_compile_definitions(libglew_static PUBLIC GLEW_STATIC)
|
||||
list(APPEND GLEW_TARGETS libglew_static)
|
||||
endif()
|
||||
|
||||
@ -92,20 +114,22 @@ if(glew-cmake_BUILD_SHARED)
|
||||
DEBUG_POSTFIX d)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(libglew_shared PRIVATE GLEW_BUILD ${DEFINITIONS})
|
||||
target_include_directories(libglew_shared PUBLIC ${INCLUDE_DIR})
|
||||
target_link_libraries(libglew_shared ${LIBRARIES})
|
||||
set_target_properties(libglew_shared PROPERTIES VERSION ${GLEW_VERSION})
|
||||
target_compile_definitions(libglew_shared PRIVATE GLEW_BUILD)
|
||||
list(APPEND GLEW_TARGETS libglew_shared)
|
||||
endif()
|
||||
|
||||
foreach(GLEW_TARGET ${GLEW_TARGETS})
|
||||
target_compile_definitions(${GLEW_TARGET} PUBLIC ${DEFINITIONS})
|
||||
target_include_directories(${GLEW_TARGET} PUBLIC ${INCLUDE_DIR})
|
||||
target_link_libraries(${GLEW_TARGET} ${LIBRARIES})
|
||||
set_target_properties(${GLEW_TARGET} PROPERTIES VERSION ${GLEW_VERSION})
|
||||
endforeach()
|
||||
|
||||
if(PKG_CONFIG_REPRESENTATIVE_TARGET)
|
||||
GeneratePkgConfigFile(${PKG_CONFIG_REPRESENTATIVE_TARGET} "The OpenGL Extension Wrangler library"
|
||||
NAME "glew"
|
||||
LIBRARY_DIR lib
|
||||
${pc_requires})
|
||||
add_library(glew ALIAS ${PKG_CONFIG_REPRESENTATIVE_TARGET})
|
||||
list(APPEND GLEW_TARGETS glew)
|
||||
REQUIRES ${pc_requires})
|
||||
endif()
|
||||
|
||||
install(TARGETS ${GLEW_TARGETS}
|
||||
|
Loading…
Reference in New Issue
Block a user