Skip to content

Commit

Permalink
GL: Fixed build using glbinding as external project
Browse files Browse the repository at this point in the history
  • Loading branch information
skyjake committed Sep 1, 2019
1 parent 170fe98 commit adcc3fe
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 16 deletions.
1 change: 1 addition & 0 deletions doomsday/apps/client/CMakeLists.txt
Expand Up @@ -326,6 +326,7 @@ if (APPLE AND NOT IOS)
doom64
heretic
hexen
${GLBINDING_TARGET}
)
if (TARGET audio_fmod)
deng_install_bundle_deps (client fmodex)
Expand Down
3 changes: 3 additions & 0 deletions doomsday/cmake/Config.cmake
Expand Up @@ -6,6 +6,9 @@
if (POLICY CMP0068)
cmake_policy (SET CMP0068 OLD) # macOS: RPATH affects install_name
endif ()
if (POLICY CMP0079)
cmake_policy (SET CMP0079 NEW)
endif ()

get_filename_component (_where "${CMAKE_CURRENT_SOURCE_DIR}" NAME)
message (STATUS "Configuring ${_where}...")
Expand Down
5 changes: 4 additions & 1 deletion doomsday/cmake/FindAssimp.cmake
Expand Up @@ -4,7 +4,7 @@ find_package (PkgConfig QUIET)
pkg_check_modules (ASSIMP assimp)
if (ASSIMP_FOUND)
#add_library (assimp ALIAS PkgConfig::ASSIMP)
status (FATAL_ERROR "TODO: Add INTERFACe library target with ASSIMP libs")
status (FATAL_ERROR "TODO: Add INTERFACE library target with ASSIMP libs")
else ()
set (ASSIMP_RELEASE 4.1.0)
message (STATUS "Open Asset Import Library ${ASSIMP_RELEASE} will be downloaded and built")
Expand Down Expand Up @@ -49,6 +49,9 @@ else ()
add_dependencies (assimp github-assimp)
endif ()

if (TARGET assimp)
set (ASSIMP_TARGET assimp)
endif ()

#if (assimp_FOUND)
# message (STATUS "Using libassimp on the system")
Expand Down
35 changes: 24 additions & 11 deletions doomsday/cmake/FindGLBindings.cmake
Expand Up @@ -6,18 +6,25 @@ find_package (glbinding QUIET)
# endif ()
#endif ()

if (NOT TARGET glbinding::glbinding)
if (NOT TARGET glbinding::glbinding AND NOT TARGET glbinding)
set (GLBINDING_RELEASE 3.0.2)
message (STATUS "cginternals/glbinding ${GLBINDING_RELEASE} will be downloaded and built")
include (ExternalProject)
set (glbindingOpts
-Wno-dev
-DOPTION_BUILD_EXAMPLES=NO
-DOPTION_BUILD_TOOLS=NO
-DOPTION_BUILD_TESTS=NO
)
if (MSVC)
# Don't bother with multiconfig, always use the release build.
list (APPEND glbindingOpts -DCMAKE_BUILD_TYPE=Release)
endif ()
#set (glbindingLibName glbinding.dll)
if (APPLE)
set (glbindingLibName libglbinding.${GLBINDING_RELEASE}.dylib)
else ()
message (FATAL_ERROR "defined shared library suffix")
endif ()
ExternalProject_Add (github-glbinding
GIT_REPOSITORY https://github.com/cginternals/glbinding.git
GIT_TAG v${GLBINDING_RELEASE}
Expand All @@ -26,13 +33,19 @@ if (NOT TARGET glbinding::glbinding)
BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/glbinding/src/github-glbinding-build/code/${glbindingLibName}
INSTALL_COMMAND ""
)
add_library (glbinding::glbinding INTERFACE)
target_include_directories (glbinding::glbinding INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/glbinding/src/github-glbinding/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/glbinding/src/github-glbinding-build/include>)
target_link_libraries (glbinding::glbinding INTERFACE
${CMAKE_CURRENT_BINARY_DIR}/glbinding/src/github-glbinding-build/code/${glbindingLibName})
install (TARGETS glbinding::glbinding EXPORT glbinding)
install (EXPORT glbinding::glbinding DESTINATION ${DE_INSTALL_LIB_DIR})
add_dependencies (glbinding::glbinding github-glbinding)
add_library (glbinding INTERFACE)
target_include_directories (glbinding INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/glbinding/src/github-glbinding/source/glbinding/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/glbinding/src/github-glbinding-build/source/glbinding/include>)
target_link_libraries (glbinding INTERFACE
${CMAKE_CURRENT_BINARY_DIR}/glbinding/src/github-glbinding-build/${glbindingLibName})
install (TARGETS glbinding EXPORT glbinding)
install (EXPORT glbinding DESTINATION ${DE_INSTALL_LIB_DIR})
add_dependencies (glbinding github-glbinding)
endif ()

if (TARGET glbinding::glbinding)
set (GLBINDING_TARGET glbinding::glbinding)
else ()
set (GLBINDING_TARGET glbinding)
endif ()
3 changes: 2 additions & 1 deletion doomsday/cmake/Macros.cmake
Expand Up @@ -596,7 +596,8 @@ function (fix_bundled_install_names binaryFile)
return ()
endif ()
if (NOT EXISTS ${binaryFile})
message (FATAL_ERROR "fix_bundled_install_names: ${binaryFile} not found")
message (STATUS "ERROR: fix_bundled_install_names: ${binaryFile} not found")
return ()
endif ()
if (binaryFile MATCHES ".*\\.bundle")
set (ref "@loader_path/../Frameworks")
Expand Down
4 changes: 2 additions & 2 deletions doomsday/libs/gui/CMakeLists.txt
Expand Up @@ -131,8 +131,8 @@ endif ()

deng_link_libraries (libgui PUBLIC DengComms)
target_link_libraries (libgui
PUBLIC glbinding::glbinding
PRIVATE SDL2 SDL2_ttf stb assimp
PUBLIC ${GLBINDING_TARGET}
PRIVATE SDL2 SDL2_ttf stb ${ASSIMP_TARGET}
)
if (WIN32)
# Direct2D is used for DPI information.
Expand Down
5 changes: 4 additions & 1 deletion doomsday/libs/gui/src/graphics/glinfo.cpp
Expand Up @@ -199,7 +199,10 @@ DE_PIMPL_NOREF(GLInfo) //, public QOpenGLFunctions_Doomsday
{
try
{
glbinding::Binding::initialize(false);
glbinding::Binding::initialize(
reinterpret_cast<glbinding::ProcAddress (*)(const char *)>(
SDL_GL_GetProcAddress),
false);
}
catch (const std::exception &x)
{
Expand Down

0 comments on commit adcc3fe

Please sign in to comment.