project(QtOpenGL)

set(QtOpenGL_DROPPED_ENTRIES)

set(QtOpenGL_SRC
${QtOpenGL_GEN_DIR}/qabstractopenglfunctions_wrapper.cpp
${QtOpenGL_GEN_DIR}/qopengldebuglogger_wrapper.cpp
${QtOpenGL_GEN_DIR}/qopengldebugmessage_wrapper.cpp
${QtOpenGL_GEN_DIR}/qopenglframebufferobjectformat_wrapper.cpp
${QtOpenGL_GEN_DIR}/qopenglpaintdevice_wrapper.cpp
${QtOpenGL_GEN_DIR}/qopenglpixeltransferoptions_wrapper.cpp
${QtOpenGL_GEN_DIR}/qopenglshaderprogram_wrapper.cpp
${QtOpenGL_GEN_DIR}/qopengltexture_wrapper.cpp
${QtOpenGL_GEN_DIR}/qopengltextureblitter_wrapper.cpp
${QtOpenGL_GEN_DIR}/qopenglversionprofile_wrapper.cpp
${QtOpenGL_GEN_DIR}/qopenglvertexarrayobject_wrapper.cpp
${QtOpenGL_GEN_DIR}/qopenglvertexarrayobject_binder_wrapper.cpp
${QtOpenGL_GEN_DIR}/qopenglwindow_wrapper.cpp
${QtOpenGL_GEN_DIR}/qopenglbuffer_wrapper.cpp
${QtOpenGL_GEN_DIR}/qopenglshader_wrapper.cpp
${QtOpenGL_GEN_DIR}/qopenglframebufferobject_wrapper.cpp
# module is always needed
${QtOpenGL_GEN_DIR}/qtopengl_module_wrapper.cpp
)

get_property(QtGui_enabled_features  TARGET Qt${QT_MAJOR_VERSION}::Gui
             PROPERTY QT_ENABLED_PUBLIC_FEATURES)

if("opengles2" IN_LIST QtGui_enabled_features)
    list(APPEND QtOpenGL_DROPPED_ENTRIES QOpenGLTimeMonitor QOpenGLTimerQuery
                QOpenGLVersionFunctionsFactory)
    list(APPEND QtOpenGL_SRC ${QtOpenGL_GEN_DIR}/qopenglfunctions_es2_wrapper.cpp)
    message(STATUS "Qt${QT_MAJOR_VERSION}Gui: Dropping Desktop OpenGL classes (GLES2)")
else()
    list(APPEND QtOpenGL_SRC
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_1_0_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_1_1_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_1_2_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_1_3_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_1_4_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_1_5_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_2_0_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_2_1_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_3_0_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_3_1_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_3_2_compatibility_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_3_2_core_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_3_3_compatibility_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_3_3_core_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_0_compatibility_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_0_core_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_1_compatibility_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_1_core_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_2_compatibility_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_2_core_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_3_compatibility_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_3_core_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_4_compatibility_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_4_core_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_5_compatibility_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_5_core_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopenglversionfunctionsfactory_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopengltimemonitor_wrapper.cpp
         ${QtOpenGL_GEN_DIR}/qopengltimerquery_wrapper.cpp)
    message(STATUS "Qt${QT_MAJOR_VERSION}OpenGL: Adding Desktop OpenGL classes")
endif()

configure_file("${QtOpenGL_SOURCE_DIR}/QtOpenGL_global.post.h.in"
               "${QtOpenGL_BINARY_DIR}/QtOpenGL_global.post.h" @ONLY)

set(QtOpenGL_include_dirs   ${QtOpenGL_SOURCE_DIR}
                            ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
                            ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
                            ${Qt${QT_MAJOR_VERSION}OpenGL_INCLUDE_DIRS}
                            ${libpyside_SOURCE_DIR}
                            ${QtCore_GEN_DIR}
                            ${QtGui_GEN_DIR}
                            ${QtOpenGL_GEN_DIR}
                            )
set(QtOpenGL_libraries      pyside6
                            ${Qt${QT_MAJOR_VERSION}Core_LIBRARIES}
                            ${Qt${QT_MAJOR_VERSION}Gui_LIBRARIES}
                            ${Qt${QT_MAJOR_VERSION}OpenGL_LIBRARIES})
set(QtOpenGL_deps QtGui)

create_pyside_module(NAME QtOpenGL
                     INCLUDE_DIRS QtOpenGL_include_dirs
                     LIBRARIES QtOpenGL_libraries
                     DEPS QtOpenGL_deps
                     TYPESYSTEM_PATH QtOpenGL_SOURCE_DIR
                     SOURCES QtOpenGL_SRC
                     DROPPED_ENTRIES QtOpenGL_DROPPED_ENTRIES)
