aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/nanogui
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/nanogui')
-rw-r--r--vcpkg/ports/nanogui/cmake4.patch22
-rw-r--r--vcpkg/ports/nanogui/fix-cmakelists.patch72
-rw-r--r--vcpkg/ports/nanogui/fix-glad-dependence.patch101
-rw-r--r--vcpkg/ports/nanogui/fix-release-build.patch72
-rw-r--r--vcpkg/ports/nanogui/portfile.cmake41
-rw-r--r--vcpkg/ports/nanogui/vcpkg.json24
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"
+ }
+ }
+}