Browse Source

cmake: add gles2 and gles3 UI type

Signed-off-by: falkTX <falktx@falktx.com>
pull/506/head
falkTX 2 months ago
parent
commit
d2d85f3cac
1 changed files with 234 additions and 3 deletions
  1. +234
    -3
      cmake/DPF-plugin.cmake

+ 234
- 3
cmake/DPF-plugin.cmake View File

@@ -78,6 +78,8 @@ include(CMakeParseArguments)
# the user interface type, can be one of the following:
# - cairo
# - external
# - gles2
# - gles3
# - opengl (default)
# - opengl3
# - vulkan
@@ -129,6 +131,16 @@ function(dpf_add_plugin NAME)
dpf__add_dgl_external($<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
set(_dgl_library dgl-external)
elseif(_dpf_plugin_UI_TYPE STREQUAL "gles2")
dpf__add_dgl_gles2($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>>
$<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
set(_dgl_library dgl-gles2)
elseif(_dpf_plugin_UI_TYPE STREQUAL "gles3")
dpf__add_dgl_gles3($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>>
$<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
set(_dgl_library dgl-gles3)
elseif(_dpf_plugin_UI_TYPE STREQUAL "opengl")
dpf__add_dgl_opengl($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>>
$<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
@@ -256,6 +268,8 @@ endfunction()
# the user interface type, can be one of the following:
# - cairo
# - external
# - gles2
# - gles3
# - opengl (default)
# - opengl3
# - vulkan
@@ -289,6 +303,16 @@ function(dpf_add_executable NAME)
dpf__add_dgl_external($<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
set(_dgl_library dgl-external)
elseif(_dpf_plugin_UI_TYPE STREQUAL "gles2")
dpf__add_dgl_gles2($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>>
$<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
set(_dgl_library dgl-gles2)
elseif(_dpf_plugin_UI_TYPE STREQUAL "gles3")
dpf__add_dgl_gles3($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>>
$<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
set(_dgl_library dgl-gles3)
elseif(_dpf_plugin_UI_TYPE STREQUAL "opengl")
dpf__add_dgl_opengl($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>>
$<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
@@ -927,6 +951,197 @@ function(dpf__add_dgl_external USE_FILE_BROWSER USE_WEB_VIEW)
target_link_libraries(dgl-external PRIVATE dgl-external-definitions "${OPENGL_gl_LIBRARY}")
endfunction()

# dpf__add_dgl_gles2
# ------------------------------------------------------------------------------
#
# Add the GLESv2 variant of DGL, if not already available.
#
function(dpf__add_dgl_gles2 SHARED_RESOURCES USE_FILE_BROWSER USE_WEB_VIEW)
if(TARGET dgl-gles2)
return()
endif()

if(NOT OpenGL_GL_PREFERENCE)
set(OpenGL_GL_PREFERENCE "LEGACY")
endif()

find_package(OpenGL REQUIRED)

dpf__add_static_library(dgl-gles2 STATIC
"${DPF_ROOT_DIR}/dgl/src/Application.cpp"
"${DPF_ROOT_DIR}/dgl/src/ApplicationPrivateData.cpp"
"${DPF_ROOT_DIR}/dgl/src/Color.cpp"
"${DPF_ROOT_DIR}/dgl/src/EventHandlers.cpp"
"${DPF_ROOT_DIR}/dgl/src/Geometry.cpp"
"${DPF_ROOT_DIR}/dgl/src/ImageBase.cpp"
"${DPF_ROOT_DIR}/dgl/src/ImageBaseWidgets.cpp"
"${DPF_ROOT_DIR}/dgl/src/Layout.cpp"
"${DPF_ROOT_DIR}/dgl/src/SubWidget.cpp"
"${DPF_ROOT_DIR}/dgl/src/SubWidgetPrivateData.cpp"
"${DPF_ROOT_DIR}/dgl/src/TopLevelWidget.cpp"
"${DPF_ROOT_DIR}/dgl/src/TopLevelWidgetPrivateData.cpp"
"${DPF_ROOT_DIR}/dgl/src/Widget.cpp"
"${DPF_ROOT_DIR}/dgl/src/WidgetPrivateData.cpp"
"${DPF_ROOT_DIR}/dgl/src/Window.cpp"
"${DPF_ROOT_DIR}/dgl/src/WindowPrivateData.cpp"
"${DPF_ROOT_DIR}/dgl/src/OpenGL.cpp"
"${DPF_ROOT_DIR}/dgl/src/NanoVG.cpp")
if(SHARED_RESOURCES)
target_sources(dgl-gles2 PRIVATE "${DPF_ROOT_DIR}/dgl/src/Resources.cpp")
else()
target_compile_definitions(dgl-gles2 PUBLIC "DGL_NO_SHARED_RESOURCES")
endif()
if(APPLE)
target_sources(dgl-gles2 PRIVATE
"${DPF_ROOT_DIR}/dgl/src/pugl.mm")
else()
target_sources(dgl-gles2 PRIVATE
"${DPF_ROOT_DIR}/dgl/src/pugl.cpp")
endif()
target_include_directories(dgl-gles2 PUBLIC
"${DPF_ROOT_DIR}/dgl")
target_include_directories(dgl-gles2 PUBLIC
"${DPF_ROOT_DIR}/dgl/src/pugl-upstream/include")

if(APPLE)
target_compile_definitions(dgl-gles2 PUBLIC "GL_SILENCE_DEPRECATION")
endif()

if(USE_FILE_BROWSER)
target_compile_definitions(dgl-gles2 PUBLIC "DGL_USE_FILE_BROWSER")
endif()

if(USE_WEB_VIEW)
target_compile_definitions(dgl-gles2 PUBLIC "DGL_USE_WEB_VIEW")
if(APPLE)
find_library(APPLE_WEBKIT_FRAMEWORK "WebKit")
target_link_libraries(dgl-gles2 PRIVATE "${APPLE_WEBKIT_FRAMEWORK}")
elseif(WIN32)
target_sources(dgl-gles2 PRIVATE
"${DPF_ROOT_DIR}/dgl/src/WebViewWin32.cpp")
set_source_files_properties("${DPF_ROOT_DIR}/dgl/src/WebViewWin32.cpp"
PROPERTIES
COMPILE_FLAGS
$<IF:$<BOOL:${MSVC}>,/std:c++17,-std=gnu++17>)
endif()
endif()

dpf__add_dgl_system_libs()
target_link_libraries(dgl-gles2 PRIVATE dgl-system-libs)
target_link_options(dgl-gles2
INTERFACE
$<$<BOOL:${EMSCRIPTEN}>:-sMIN_WEBGL_VERSION=2>
$<$<BOOL:${EMSCRIPTEN}>:-sMAX_WEBGL_VERSION=2>
)

add_library(dgl-gles2-definitions INTERFACE)
target_compile_definitions(dgl-gles2-definitions
INTERFACE
DGL_USE_OPENGL3
DGL_USE_GLES
DGL_USE_GLES2
DGL_OPENGL
HAVE_OPENGL
HAVE_DGL
)

target_include_directories(dgl-gles2 PUBLIC "${OPENGL_INCLUDE_DIR}")
target_link_libraries(dgl-gles2 PRIVATE dgl-gles2-definitions "${OPENGL_gl_LIBRARY}")
endfunction()

# dpf__add_dgl_gles3
# ------------------------------------------------------------------------------
#
# Add the GLESv3 variant of DGL, if not already available.
#
function(dpf__add_dgl_gles3 SHARED_RESOURCES USE_FILE_BROWSER USE_WEB_VIEW)
if(TARGET dgl-gles3)
return()
endif()

if(NOT OpenGL_GL_PREFERENCE)
set(OpenGL_GL_PREFERENCE "LEGACY")
endif()

find_package(OpenGL REQUIRED)

dpf__add_static_library(dgl-gles3 STATIC
"${DPF_ROOT_DIR}/dgl/src/Application.cpp"
"${DPF_ROOT_DIR}/dgl/src/ApplicationPrivateData.cpp"
"${DPF_ROOT_DIR}/dgl/src/Color.cpp"
"${DPF_ROOT_DIR}/dgl/src/EventHandlers.cpp"
"${DPF_ROOT_DIR}/dgl/src/Geometry.cpp"
"${DPF_ROOT_DIR}/dgl/src/ImageBase.cpp"
"${DPF_ROOT_DIR}/dgl/src/ImageBaseWidgets.cpp"
"${DPF_ROOT_DIR}/dgl/src/Layout.cpp"
"${DPF_ROOT_DIR}/dgl/src/SubWidget.cpp"
"${DPF_ROOT_DIR}/dgl/src/SubWidgetPrivateData.cpp"
"${DPF_ROOT_DIR}/dgl/src/TopLevelWidget.cpp"
"${DPF_ROOT_DIR}/dgl/src/TopLevelWidgetPrivateData.cpp"
"${DPF_ROOT_DIR}/dgl/src/Widget.cpp"
"${DPF_ROOT_DIR}/dgl/src/WidgetPrivateData.cpp"
"${DPF_ROOT_DIR}/dgl/src/Window.cpp"
"${DPF_ROOT_DIR}/dgl/src/WindowPrivateData.cpp"
"${DPF_ROOT_DIR}/dgl/src/OpenGL.cpp"
"${DPF_ROOT_DIR}/dgl/src/NanoVG.cpp")
if(SHARED_RESOURCES)
target_sources(dgl-gles3 PRIVATE "${DPF_ROOT_DIR}/dgl/src/Resources.cpp")
else()
target_compile_definitions(dgl-gles3 PUBLIC "DGL_NO_SHARED_RESOURCES")
endif()
if(APPLE)
target_sources(dgl-gles3 PRIVATE
"${DPF_ROOT_DIR}/dgl/src/pugl.mm")
else()
target_sources(dgl-gles3 PRIVATE
"${DPF_ROOT_DIR}/dgl/src/pugl.cpp")
endif()
target_include_directories(dgl-gles3 PUBLIC
"${DPF_ROOT_DIR}/dgl")
target_include_directories(dgl-gles3 PUBLIC
"${DPF_ROOT_DIR}/dgl/src/pugl-upstream/include")

if(APPLE)
target_compile_definitions(dgl-gles3 PUBLIC "GL_SILENCE_DEPRECATION")
endif()

if(USE_FILE_BROWSER)
target_compile_definitions(dgl-gles3 PUBLIC "DGL_USE_FILE_BROWSER")
endif()

if(USE_WEB_VIEW)
target_compile_definitions(dgl-gles3 PUBLIC "DGL_USE_WEB_VIEW")
if(APPLE)
find_library(APPLE_WEBKIT_FRAMEWORK "WebKit")
target_link_libraries(dgl-gles3 PRIVATE "${APPLE_WEBKIT_FRAMEWORK}")
elseif(WIN32)
target_sources(dgl-gles3 PRIVATE
"${DPF_ROOT_DIR}/dgl/src/WebViewWin32.cpp")
set_source_files_properties("${DPF_ROOT_DIR}/dgl/src/WebViewWin32.cpp"
PROPERTIES
COMPILE_FLAGS
$<IF:$<BOOL:${MSVC}>,/std:c++17,-std=gnu++17>)
endif()
endif()

dpf__add_dgl_system_libs()
target_link_libraries(dgl-gles3 PRIVATE dgl-system-libs)

add_library(dgl-gles3-definitions INTERFACE)
target_compile_definitions(dgl-gles3-definitions
INTERFACE
DGL_USE_OPENGL3
DGL_USE_GLES
DGL_USE_GLES3
DGL_OPENGL
HAVE_OPENGL
HAVE_DGL
)

target_include_directories(dgl-gles3 PUBLIC "${OPENGL_INCLUDE_DIR}")
target_link_libraries(dgl-gles3 PRIVATE dgl-gles3-definitions "${OPENGL_gl_LIBRARY}")
endfunction()

# dpf__add_dgl_opengl
# ------------------------------------------------------------------------------
#
@@ -1004,9 +1219,19 @@ function(dpf__add_dgl_opengl SHARED_RESOURCES USE_FILE_BROWSER USE_WEB_VIEW)

dpf__add_dgl_system_libs()
target_link_libraries(dgl-opengl PRIVATE dgl-system-libs)
target_link_options(dgl-opengl
INTERFACE
$<$<BOOL:${EMSCRIPTEN}>:-sLEGACY_GL_EMULATION>
$<$<BOOL:${EMSCRIPTEN}>:-sGL_UNSAFE_OPTS=0>
)

add_library(dgl-opengl-definitions INTERFACE)
target_compile_definitions(dgl-opengl-definitions INTERFACE "DGL_OPENGL" "HAVE_OPENGL" "HAVE_DGL")
target_compile_definitions(dgl-opengl-definitions
INTERFACE
DGL_OPENGL
HAVE_OPENGL
HAVE_DGL
)

target_include_directories(dgl-opengl PUBLIC "${OPENGL_INCLUDE_DIR}")
target_link_libraries(dgl-opengl PRIVATE dgl-opengl-definitions "${OPENGL_gl_LIBRARY}")
@@ -1091,7 +1316,13 @@ function(dpf__add_dgl_opengl3 SHARED_RESOURCES USE_FILE_BROWSER USE_WEB_VIEW)
target_link_libraries(dgl-opengl3 PRIVATE dgl-system-libs)

add_library(dgl-opengl3-definitions INTERFACE)
target_compile_definitions(dgl-opengl3-definitions INTERFACE "DGL_USE_OPENGL3" "DGL_OPENGL" "HAVE_OPENGL" "HAVE_DGL")
target_compile_definitions(dgl-opengl3-definitions
INTERFACE
DGL_USE_OPENGL3
DGL_OPENGL
HAVE_OPENGL
HAVE_DGL
)

target_include_directories(dgl-opengl3 PUBLIC "${OPENGL_INCLUDE_DIR}")
target_link_libraries(dgl-opengl3 PRIVATE dgl-opengl3-definitions "${OPENGL_gl_LIBRARY}")
@@ -1349,7 +1580,7 @@ function(dpf__set_target_defaults NAME)
if (CMAKE_COMPILER_IS_GNUCXX)
target_compile_options("${NAME}" PUBLIC "-fno-gnu-unique")
endif()
if ((NOT APPLE) AND (NOT MSVC))
if ((NOT APPLE) AND (NOT EMSCRIPTEN) AND (NOT MSVC))
target_link_options("${NAME}" PUBLIC "-Wl,--no-undefined")
endif()
endfunction()


Loading…
Cancel
Save