diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/nanogui | |
Diffstat (limited to 'vcpkg/ports/nanogui')
| -rw-r--r-- | vcpkg/ports/nanogui/cmake4.patch | 22 | ||||
| -rw-r--r-- | vcpkg/ports/nanogui/fix-cmakelists.patch | 72 | ||||
| -rw-r--r-- | vcpkg/ports/nanogui/fix-glad-dependence.patch | 101 | ||||
| -rw-r--r-- | vcpkg/ports/nanogui/fix-release-build.patch | 72 | ||||
| -rw-r--r-- | vcpkg/ports/nanogui/portfile.cmake | 41 | ||||
| -rw-r--r-- | vcpkg/ports/nanogui/vcpkg.json | 24 |
6 files changed, 332 insertions, 0 deletions
diff --git a/vcpkg/ports/nanogui/cmake4.patch b/vcpkg/ports/nanogui/cmake4.patch new file mode 100644 index 0000000..479520f --- /dev/null +++ b/vcpkg/ports/nanogui/cmake4.patch @@ -0,0 +1,22 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 22dc16fc59..894fcce2ad 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -116,7 +116,7 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES " + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") + endif() + +-if (CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang|Intel)$") ++if (CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang|Intel)$") + CHECK_CXX_COMPILER_FLAG("-std=c++14" HAS_CPP14_FLAG) + CHECK_CXX_COMPILER_FLAG("-std=c++11" HAS_CPP11_FLAG) + +@@ -131,7 +131,7 @@ endif() + + # Various optimizations for shared library release builds + if (NANOGUI_BUILD_SHARED) +- if (U_CMAKE_BUILD_TYPE MATCHES REL AND CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang)$") ++ if (U_CMAKE_BUILD_TYPE MATCHES REL AND CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$") + # Set the default symbol visibility to hidden + if (NOT CMAKE_CXX_FLAGS MATCHES "-fvisibility") + set(CMAKE_CXX_FLAGS "-fvisibility=hidden ${CMAKE_CXX_FLAGS}") diff --git a/vcpkg/ports/nanogui/fix-cmakelists.patch b/vcpkg/ports/nanogui/fix-cmakelists.patch new file mode 100644 index 0000000..cc4aa05 --- /dev/null +++ b/vcpkg/ports/nanogui/fix-cmakelists.patch @@ -0,0 +1,72 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 8c59277..3fe6f5d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -11,11 +11,7 @@ if (POLICY CMP0058) + cmake_policy(SET CMP0058 NEW) + endif() + +-if (NOT IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/ext/glfw/src") +- message(FATAL_ERROR "The NanoGUI dependency repositories (GLFW, etc.) are missing! " +- "You probably did not clone the project with --recursive. It is possible to recover " +- "by calling \"git submodule update --init --recursive\"") +-endif() ++ + + if (WIN32) + set(NANOGUI_USE_GLAD_DEFAULT ON) +@@ -78,13 +74,11 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-declarations") + endif() + +-add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/ext/glfw" "ext_build/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) + + # Python support: add NANOGUI_PYTHON flag to all targets + if (NANOGUI_BUILD_PYTHON) +@@ -310,7 +304,6 @@ add_definitions(${NANOGUI_EXTRA_DEFS}) + # Compile main NanoGUI library + add_library(nanogui-obj OBJECT + # Merge NanoVG into the NanoGUI library +- ext/nanovg/src/nanovg.c + # Merge GLAD into the NanoGUI library (only if needed) + ${LIBNANOGUI_EXTRA_SOURCE} + # Fonts etc. +@@ -352,6 +345,11 @@ add_library(nanogui-obj OBJECT + src/serializer.cpp + ) + ++find_path(EIGEN_INCLUDE_DIR Eigen/Core) ++target_include_directories(nanogui-obj PRIVATE ${EIGEN_INCLUDE_DIR}) ++find_path(STB_INCLUDE_DIR stb_image.h) ++target_include_directories(nanogui-obj PRIVATE ${STB_INCLUDE_DIR}) ++ + # XCode has a serious bug where the XCode project produces an invalid target + # that will not get linked if it consists only of objects from object libraries, + # it will not generate any products (executables, libraries). The only work +@@ -363,15 +361,18 @@ if (CMAKE_GENERATOR STREQUAL Xcode) + add_library(nanogui ${NANOGUI_LIBRARY_TYPE} + ${XCODE_DUMMY} + $<TARGET_OBJECTS:nanogui-obj> +- $<TARGET_OBJECTS:glfw_objects> + ) + else() + add_library(nanogui ${NANOGUI_LIBRARY_TYPE} + $<TARGET_OBJECTS:nanogui-obj> +- $<TARGET_OBJECTS:glfw_objects> + ) + endif() + ++find_package(nanovg CONFIG REQUIRED) ++find_package(Eigen3 CONFIG REQUIRED) ++find_package(glfw3 CONFIG REQUIRED) ++target_link_libraries(nanogui glfw nanovg::nanovg Eigen3::Eigen) ++ + if (NANOGUI_BUILD_SHARED) + set_property(TARGET nanogui-obj PROPERTY POSITION_INDEPENDENT_CODE ON) + endif() diff --git a/vcpkg/ports/nanogui/fix-glad-dependence.patch b/vcpkg/ports/nanogui/fix-glad-dependence.patch new file mode 100644 index 0000000..03a3475 --- /dev/null +++ b/vcpkg/ports/nanogui/fix-glad-dependence.patch @@ -0,0 +1,101 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 3fe6f5d..22dc16f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -87,7 +87,7 @@ endif() + + # Shared library mode: add dllimport/dllexport flags to all symbols + if (NANOGUI_BUILD_SHARED) +- list(APPEND NANOGUI_EXTRA_DEFS -DNANOGUI_SHARED -DNVG_SHARED -DGLAD_GLAPI_EXPORT) ++ list(APPEND NANOGUI_EXTRA_DEFS -DNANOGUI_SHARED -DNVG_SHARED) + endif() + + if (MSVC) +@@ -196,21 +196,6 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + endif() + endif() + +-if (NANOGUI_USE_GLAD) +- # Build and include GLAD on Windows +- list(APPEND LIBNANOGUI_EXTRA_SOURCE +- "${CMAKE_CURRENT_SOURCE_DIR}/ext/glad/src/glad.c" +- "${CMAKE_CURRENT_SOURCE_DIR}/ext/glad/include/glad/glad.h" +- "${CMAKE_CURRENT_SOURCE_DIR}/ext/glad/include/KHR/khrplatform.h") +- if (MSVC) +- set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/ext/glad/src/glad.c" +- PROPERTIES COMPILE_FLAGS "/wd4055 ") +- endif() +- include_directories(ext/glad/include) +- list(APPEND NANOGUI_EXTRA_DEFS -DNANOGUI_GLAD) +- list(APPEND NANOGUI_EXTRA_INCS "${CMAKE_CURRENT_SOURCE_DIR}/ext/glad/include") +-endif() +- + list(APPEND NANOGUI_EXTRA_INCS + "${CMAKE_CURRENT_SOURCE_DIR}/ext/glfw/include" + "${CMAKE_CURRENT_SOURCE_DIR}/ext/nanovg/src" +@@ -299,8 +284,6 @@ if (APPLE) + add_compile_options(-fobjc-arc) + endif() + +-add_definitions(${NANOGUI_EXTRA_DEFS}) +- + # Compile main NanoGUI library + add_library(nanogui-obj OBJECT + # Merge NanoVG into the NanoGUI library +@@ -373,6 +356,14 @@ find_package(Eigen3 CONFIG REQUIRED) + find_package(glfw3 CONFIG REQUIRED) + target_link_libraries(nanogui glfw nanovg::nanovg Eigen3::Eigen) + ++if (NANOGUI_USE_GLAD) ++ find_package(glad CONFIG REQUIRED) ++ target_link_libraries(nanogui glad::glad) ++ list(APPEND NANOGUI_EXTRA_DEFS -DNANOGUI_GLAD) ++endif() ++ ++add_definitions(${NANOGUI_EXTRA_DEFS}) ++ + if (NANOGUI_BUILD_SHARED) + set_property(TARGET nanogui-obj PROPERTY POSITION_INDEPENDENT_CODE ON) + endif() +@@ -380,11 +371,6 @@ endif() + # Compile/link flags for NanoGUI + set_property(TARGET nanogui-obj APPEND PROPERTY COMPILE_DEFINITIONS "NANOGUI_BUILD;NVG_BUILD") + +-if (NANOGUI_USE_GLAD AND NANOGUI_BUILD_SHARED) +- set_property(TARGET nanogui-obj APPEND PROPERTY COMPILE_DEFINITIONS +- "GLAD_GLAPI_EXPORT;GLAD_GLAPI_EXPORT_BUILD") +-endif() +- + if (NANOGUI_BUILD_SHARED) + target_link_libraries(nanogui ${NANOGUI_EXTRA_LIBS}) + endif() +diff --git a/include/nanogui/opengl.h b/include/nanogui/opengl.h +index f5abcb2..1c20653 100644 +--- a/include/nanogui/opengl.h ++++ b/include/nanogui/opengl.h +@@ -17,10 +17,6 @@ + + #ifndef DOXYGEN_SHOULD_SKIP_THIS + #if defined(NANOGUI_GLAD) +- #if defined(NANOGUI_SHARED) && !defined(GLAD_GLAPI_EXPORT) +- #define GLAD_GLAPI_EXPORT +- #endif +- + #include <glad/glad.h> + #else + #if defined(__APPLE__) +diff --git a/src/example3.cpp b/src/example3.cpp +index 3d2ecfa..72deaa8 100644 +--- a/src/example3.cpp ++++ b/src/example3.cpp +@@ -14,10 +14,6 @@ + // GLFW + // + #if defined(NANOGUI_GLAD) +- #if defined(NANOGUI_SHARED) && !defined(GLAD_GLAPI_EXPORT) +- #define GLAD_GLAPI_EXPORT +- #endif +- + #include <glad/glad.h> + #else + #if defined(__APPLE__) diff --git a/vcpkg/ports/nanogui/fix-release-build.patch b/vcpkg/ports/nanogui/fix-release-build.patch new file mode 100644 index 0000000..7baa1eb --- /dev/null +++ b/vcpkg/ports/nanogui/fix-release-build.patch @@ -0,0 +1,72 @@ +diff --git a/src/glcanvas.cpp b/src/glcanvas.cpp +index ec1ca4f..6ebf5a9 100644 +--- a/src/glcanvas.cpp ++++ b/src/glcanvas.cpp +@@ -18,6 +18,7 @@ + #include <nanogui/theme.h> + #include <nanogui/opengl.h> + #include <nanogui/serializer/core.h> ++#include <cassert> + + NAMESPACE_BEGIN(nanogui) + +diff --git a/src/imageview.cpp b/src/imageview.cpp +index 80cdf9b..f0ebbaf 100644 +--- a/src/imageview.cpp ++++ b/src/imageview.cpp +@@ -15,6 +15,7 @@ + #include <nanogui/window.h> + #include <nanogui/screen.h> + #include <nanogui/theme.h> ++#include <cassert> + #include <cmath> + + NAMESPACE_BEGIN(nanogui) +diff --git a/src/stackedwidget.cpp b/src/stackedwidget.cpp +index 0b56b31..16b07cc 100644 +--- a/src/stackedwidget.cpp ++++ b/src/stackedwidget.cpp +@@ -13,6 +13,7 @@ + */ + + #include <nanogui/stackedwidget.h> ++#include <cassert> + + NAMESPACE_BEGIN(nanogui) + +diff --git a/src/tabheader.cpp b/src/tabheader.cpp +index e3a24ff..86e1493 100644 +--- a/src/tabheader.cpp ++++ b/src/tabheader.cpp +@@ -14,6 +14,7 @@ + #include <nanogui/tabheader.h> + #include <nanogui/theme.h> + #include <nanogui/opengl.h> ++#include <cassert> + #include <numeric> + + NAMESPACE_BEGIN(nanogui) +diff --git a/src/tabwidget.cpp b/src/tabwidget.cpp +index e01b5c3..0a3f76c 100644 +--- a/src/tabwidget.cpp ++++ b/src/tabwidget.cpp +@@ -19,6 +19,7 @@ + #include <nanogui/opengl.h> + #include <nanogui/window.h> + #include <nanogui/screen.h> ++#include <cassert> + #include <algorithm> + + NAMESPACE_BEGIN(nanogui) +diff --git a/src/widget.cpp b/src/widget.cpp +index 03af6b1..68318a8 100644 +--- a/src/widget.cpp ++++ b/src/widget.cpp +@@ -16,6 +16,7 @@ + #include <nanogui/opengl.h> + #include <nanogui/screen.h> + #include <nanogui/serializer/core.h> ++#include <cassert> + + NAMESPACE_BEGIN(nanogui) + diff --git a/vcpkg/ports/nanogui/portfile.cmake b/vcpkg/ports/nanogui/portfile.cmake new file mode 100644 index 0000000..cc7e5c5 --- /dev/null +++ b/vcpkg/ports/nanogui/portfile.cmake @@ -0,0 +1,41 @@ +if(VCPKG_HOST_IS_WINDOWS) + set(USE_GLAD -DNANOGUI_USE_GLAD=ON) + vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +else() + set(USE_GLAD -DNANOGUI_USE_GLAD=OFF) +endif() + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO wjakob/nanogui + REF e9ec8a1a9861cf578d9c6e85a6420080aa715c03 # Commits on Sep 23, 2019 + SHA512 36c93bf977862ced2df4030211e2b83625e60a11fc9fdb6c1f2996bb234758331d3f41a7fbafd25a5bca0239ed9bac9c93446a4a7fac4c5e6d7943af2be3e14a + HEAD_REF master + PATCHES + fix-cmakelists.patch + fix-glad-dependence.patch + fix-release-build.patch + cmake4.patch +) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + "example" NANOGUI_BUILD_EXAMPLE +) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" BUILD_SHARED) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS ${FEATURE_OPTIONS} + -DNANOGUI_EIGEN_INCLUDE_DIR=${CURRENT_INSTALLED_DIR}/include/eigen3 + -DEIGEN_INCLUDE_DIR=${CURRENT_INSTALLED_DIR}/include/eigen3 + -DNANOGUI_BUILD_SHARED=${BUILD_SHARED} + ${USE_GLAD} +) + +vcpkg_cmake_install() +vcpkg_copy_pdbs() +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +file(INSTALL "${SOURCE_PATH}/LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/vcpkg/ports/nanogui/vcpkg.json b/vcpkg/ports/nanogui/vcpkg.json new file mode 100644 index 0000000..174a4fa --- /dev/null +++ b/vcpkg/ports/nanogui/vcpkg.json @@ -0,0 +1,24 @@ +{ + "name": "nanogui", + "version-date": "2019-09-23", + "port-version": 7, + "description": "NanoGUI is a minimalistic cross-platform widget library for OpenGL 3.x or higher.", + "homepage": "https://github.com/wjakob/nanogui", + "license": "BSD-3-Clause", + "supports": "!uwp", + "dependencies": [ + "eigen3", + "glad", + "glfw3", + "nanovg", + { + "name": "vcpkg-cmake", + "host": true + } + ], + "features": { + "example": { + "description": "Build NanoGUI example application" + } + } +} |