Skip to content

Commit 2ee1188

Browse files
authored
Add OpenGL::GL cmake imported targets (#23705)
This allows projects to include OpenGL like so ```cmake find_package(OpenGL REQUIRED) target_link_libraries(myproject OpenGL::GL) ``` Link to CMake's documentation: https://cmake.org/cmake/help/latest/module/FindOpenGL.html#imported-targets CMake's `FindOpenGL.cmake` also produces GLES-related imported targets. While I think they would be nice to add, I've omitted them as I don't know if it would be as simple as duplicating the `OpenGL::GL` target or more needs to be to communicate that choice of flavor to emscripten.
1 parent 4147246 commit 2ee1188

File tree

4 files changed

+26
-6
lines changed

4 files changed

+26
-6
lines changed

cmake/Modules/FindOpenGL.cmake

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,15 @@ mark_as_advanced(
3030
OPENGL_glu_LIBRARY
3131
OPENGL_gl_LIBRARY
3232
)
33+
34+
add_library(OpenGL::GL INTERFACE IMPORTED)
35+
set_target_properties(OpenGL::GL PROPERTIES
36+
IMPORTED_LIBNAME "${OPENGL_gl_LIBRARY}"
37+
INTERFACE_INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
38+
)
39+
40+
add_library(OpenGL::GLU INTERFACE IMPORTED)
41+
set_target_properties(OpenGL::GLU PROPERTIES
42+
IMPORTED_LIBNAME "${OPENGL_glu_LIBRARY}"
43+
INTERFACE_LINK_LIBRARIES OpenGL::GL
44+
)

test/cmake/find_modules/CMakeLists.txt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,21 @@ add_executable(test_prog test.c)
66
find_package(OpenGL REQUIRED)
77
include_directories(${OPENGL_INCLUDE_DIR})
88
target_link_libraries(test_prog ${OPENGL_LIBRARIES})
9-
message(" test: OPENGL_LIBRARIES: ${OPENGL_LIBRARIES}")
9+
message(STATUS " test: OPENGL_LIBRARIES: ${OPENGL_LIBRARIES}")
1010

1111
find_package(OpenAL REQUIRED)
1212
include_directories(${OPENAL_INCLUDE_DIR})
1313
target_link_libraries(test_prog ${OPENAL_LIBRARY})
14-
message(" test: OPENGL_LIBRARIES: ${OPENAL_LIBRARIES}")
14+
message(STATUS " test: OPENAL_LIBRARIES: ${OPENAL_LIBRARIES}")
1515

1616
find_package(SDL2 REQUIRED)
1717
include_directories(${SDL2_INCLUDE_DIRS})
1818
target_link_libraries(test_prog SDL2::SDL2)
19-
message(" test: SDL2_LIBRARIES: ${SDL2_LIBRARIES}")
20-
message(" test: SDL2_INCLUDE_DIRS: ${SDL2_INCLUDE_DIRS}")
19+
message(STATUS " test: SDL2_LIBRARIES: ${SDL2_LIBRARIES}")
20+
message(STATUS " test: SDL2_INCLUDE_DIRS: ${SDL2_INCLUDE_DIRS}")
21+
22+
get_target_property(TEST_OPENGL_GL_LIBNAME OpenGL::GL IMPORTED_LIBNAME)
23+
message(STATUS " test: OpenGL::GL IMPORTED_LIBNAME: ${TEST_OPENGL_GL_LIBNAME}")
24+
25+
get_target_property(TEST_OPENGL_GL_INCLUDES OpenGL::GL INTERFACE_INCLUDE_DIRECTORIES)
26+
message(STATUS " test: OpenGL::GL INTERFACE_INCLUDE_DIRECTORIES: ${TEST_OPENGL_GL_INCLUDES}")

test/cmake/find_modules/test.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Invlude emscripten/version.h to ensure that the in-tree
1+
// Include emscripten/version.h to ensure that the in-tree
22
// include directory has not been added to the include path.
33
#include <emscripten/version.h>
44
#include <stdio.h>

test/test_other.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1091,7 +1091,9 @@ def test_cmake_install(self):
10911091

10921092
@requires_network
10931093
def test_cmake_find_modules(self):
1094-
self.run_process([EMCMAKE, 'cmake', test_file('cmake/find_modules')])
1094+
output = self.run_process([EMCMAKE, 'cmake', test_file('cmake/find_modules')], stdout=PIPE).stdout
1095+
self.assertContained(' test: OpenGL::GL IMPORTED_LIBNAME: GL', output)
1096+
self.assertContained(' test: OpenGL::GL INTERFACE_INCLUDE_DIRECTORIES: /.+/cache/sysroot/include', output, regex=True)
10951097
self.run_process(['cmake', '--build', '.'])
10961098
output = self.run_js('test_prog.js')
10971099
self.assertContained('AL_VERSION: 1.1', output)

0 commit comments

Comments
 (0)