Skip to content

Commit

Permalink
switch to non-fork glfw, with associated cmake changes
Browse files Browse the repository at this point in the history
  • Loading branch information
ashpil committed Nov 1, 2022
1 parent 82b2851 commit 43f3e85
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 25 deletions.
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
url = https://github.com/wjakob/nanovg_metal
[submodule "ext/glfw"]
path = ext/glfw
url = https://github.com/wjakob/glfw
url = https://github.com/glfw/glfw
[submodule "ext/nanobind"]
path = ext/nanobind
url = https://github.com/wjakob/nanobind
28 changes: 7 additions & 21 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ if (NANOGUI_BUILD_GLFW)
set(GLFW_BUILD_TESTS OFF CACHE BOOL " " FORCE)
set(GLFW_BUILD_DOCS OFF CACHE BOOL " " FORCE)
set(GLFW_BUILD_INSTALL OFF CACHE BOOL " " FORCE)
set(GLFW_INSTALL OFF CACHE BOOL " " FORCE)
set(GLFW_INSTALL NANOGUI_INSTALL CACHE BOOL " " FORCE) # install GLFW if nanogui install requested
set(GLFW_USE_CHDIR OFF CACHE BOOL " " FORCE)
set(BUILD_SHARED_LIBS ${NANOGUI_BUILD_SHARED} CACHE BOOL " " FORCE)

Expand All @@ -231,13 +231,7 @@ if (NANOGUI_BUILD_GLFW)
endif()

add_subdirectory(ext/glfw)

# Two targets have now been defined: `glfw_objects`, which will be merged into
# NanoGUI at the end, and `glfw`. The `glfw` target is the library itself
# (e.g., libglfw.so), but can be skipped as we do not need to link against it
# (because we merge `glfw_objects` into NanoGUI). Skipping is required for
# XCode, but preferable for all build systems (reduces build artifacts).
set_target_properties(glfw PROPERTIES EXCLUDE_FROM_ALL 1 EXCLUDE_FROM_DEFAULT_BUILD 1)
list(APPEND NANOGUI_LIBS glfw)

mark_as_advanced(
GLFW_BUILD_DOCS GLFW_BUILD_EXAMPLES GLFW_BUILD_INSTALL GLFW_BUILD_TESTS
Expand Down Expand Up @@ -302,9 +296,10 @@ elseif (APPLE)
list(APPEND NANOGUI_EXTRA src/darwin.mm src/autorelease.mm)
set_property(SOURCE src/autorelease.mm PROPERTY COMPILE_FLAGS -fno-objc-arc)
elseif (CMAKE_SYSTEM MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "BSD")
list(APPEND NANOGUI_LIBS X11 pthread)
list(APPEND NANOGUI_LIBS pthread)
if (NANOGUI_BACKEND STREQUAL "OpenGL")
list(APPEND NANOGUI_LIBS GL)
find_package(OpenGL REQUIRED COMPONENTS OpenGL)
list(APPEND NANOGUI_LIBS OpenGL::OpenGL)
elseif (NANOGUI_BACKEND STREQUAL "GLES 2")
list(APPEND NANOGUI_LIBS GLESv2)
elseif (NANOGUI_BACKEND STREQUAL "GLES 3")
Expand Down Expand Up @@ -379,10 +374,6 @@ if (APPLE AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-fobjc-arc)
endif()

if (NANOGUI_BUILD_GLFW)
list(APPEND NANOGUI_EXTRA $<TARGET_OBJECTS:glfw_objects>)
endif()

# Compile main NanoGUI library
add_library(nanogui ${NANOGUI_LIBRARY_TYPE}
# Merge NanoVG into the NanoGUI library
Expand Down Expand Up @@ -515,11 +506,6 @@ if (NANOGUI_INSTALL)
install(DIRECTORY ext/nanovg/src/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/nanovg
FILES_MATCHING PATTERN "*.h")

if (NANOGUI_BUILD_GLFW)
install(DIRECTORY ext/glfw/include/GLFW DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
FILES_MATCHING PATTERN "*.h")
endif()

if (NANOGUI_BUILD_GLAD)
install(DIRECTORY ext/glad/include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glad
FILES_MATCHING PATTERN "*.h")
Expand Down Expand Up @@ -564,10 +550,10 @@ if (NANOGUI_BUILD_EXAMPLES)
add_executable(example4 src/example4.cpp)
add_executable(example_icons src/example_icons.cpp)

target_link_libraries(example1 nanogui)
target_link_libraries(example1 nanogui glfw)
target_link_libraries(example2 nanogui)
target_link_libraries(example3 nanogui ${NANOGUI_LIBS}) # For OpenGL
target_link_libraries(example4 nanogui)
target_link_libraries(example4 nanogui glfw)
target_link_libraries(example_icons nanogui)

# Copy icons for example application
Expand Down
2 changes: 1 addition & 1 deletion docs/compilation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ file as follows (this assumes that ``nanogui`` lives in the directory
add_subdirectory(ext/nanogui)
# For reliability of parallel build, make the NanoGUI targets dependencies
set_property(TARGET glfw glfw_objects nanogui PROPERTY FOLDER "dependencies")
set_property(TARGET glfw nanogui PROPERTY FOLDER "dependencies")
Required Variables Exposed
----------------------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion ext/glfw
Submodule glfw updated 112 files
2 changes: 1 addition & 1 deletion src/python/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ if (NOT NANOGUI_BUILD_SHARED)
set_target_properties(nanogui PROPERTIES POSITION_INDEPENDENT_CODE ON)

if (NANOGUI_BUILD_GLFW)
set_target_properties(glfw_objects PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(glfw PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
endif()

Expand Down

0 comments on commit 43f3e85

Please sign in to comment.