mirror of https://github.com/microsoft/vcpkg.git
[mdl] Add port MDL-SDK 2021.1.2 (#24633)
* [mdl] Add port MDL-SDK 2020.0.1 * [mdl] Expose `dds` and `freeimage` features * [mdl] Upgrade MDL-SDK 2020.1.2 * Update ports/mdl/portfile.cmake Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com> * [mdl] simplify patch 001-freeimage-from-vcpkg.patch * [mdl] improve and simplify patch 003-install-rules.patch * [mdl] enable dependency log for better debugging in case of failure * [mdl] expose interface include directions for mdl core & mdl sdk * [mdl] build clang as part of vendored LLVM * [mdl] remove unnecessary export * [mdl] Use `unofficial::` namespace prefix * [mdl] remove unnecessary checks about clang CMake target * [mdl] `vcpkg_extract_source_archive` -> `vcpkg_extract_source_archive_ex` * [mdl] Use `vcpkg_find_acquire_program(CLANG7)` * [mdl] disable osx arm64 * [mdl] add license cf. https://developer.nvidia.com/nvidia-mdl-sdk-get-started * [mdl] Use `vcpkg-tool-clang7` * [mdl] restrict arm build * [vcpkg-tool-clang7] Fix broken symlink on UNIX platform * [mdl] Revert changes in `vckpg_find_acquire_program` * [mdl] Rely on `vcpkg-tool-clang7` `vcpkg-port-config.cmake` * [mdl] No support for x86 nor static CRT (because of dynamic linkage only) * Mark Windows static linkage ports as fail due to freeimage requirement * [mdl] Restrict static on Windows * [mdl] remove leftover patch * [vcpkg-tool-clang7] patch cleanup * Commit suggestion. * Versions * [mdl] include priority to vendored LLVM * [mdl] path in quotes * [mdl] update 001-freeimage-from-vcpkg.patch with comments * [mdl] Download clang 7 prior to build MDL-SDK * Fix incorrect clang path for UNIX * [mdl] portfile cleanup * Apply code review suggestions * Update ports/mdl/portfile.cmake Co-authored-by: Victor Romero <romerosanchezv@gmail.com> * bump version * Address review comments * mdl -> mdl-sdk * minimize 006-guard-nonexisting-targets.patch * minimize 002-install-rules.patch * Notes in portfile about clang 7 usage * Add CMAKE_DISABLE_FIND_PACKAGE-<PACKAGE_NAME> to disable optional packages * Address comments Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com> Co-authored-by: Victor Romero <romerosanchezv@gmail.com>
This commit is contained in:
parent
d8e60ef474
commit
e2aa9d12c4
|
|
@ -0,0 +1,68 @@
|
|||
diff --git a/cmake/dependencies/add_freeimage.cmake b/cmake/dependencies/add_freeimage.cmake
|
||||
index 944d452..3916352 100644
|
||||
--- a/cmake/dependencies/add_freeimage.cmake
|
||||
+++ b/cmake/dependencies/add_freeimage.cmake
|
||||
@@ -67,13 +67,4 @@ else()
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
-
|
||||
- # copy runtime dependencies
|
||||
- # copy system libraries only on windows, we assume the libraries are installed in a unix environment
|
||||
- if(NOT __TARGET_ADD_DEPENDENCY_NO_RUNTIME_COPY AND WINDOWS)
|
||||
- target_copy_to_output_dir(TARGET ${__TARGET_ADD_DEPENDENCY_TARGET}
|
||||
- FILES
|
||||
- ${MDL_DEPENDENCY_FREEIMAGE_SHARED}
|
||||
- )
|
||||
- endif()
|
||||
endif()
|
||||
diff --git a/cmake/find/find_freeimage_ext.cmake b/cmake/find/find_freeimage_ext.cmake
|
||||
index b11573a..703458e 100644
|
||||
--- a/cmake/find/find_freeimage_ext.cmake
|
||||
+++ b/cmake/find/find_freeimage_ext.cmake
|
||||
@@ -28,6 +28,9 @@
|
||||
|
||||
function(FIND_FREEIMAGE_EXT)
|
||||
|
||||
+ find_package(freeimage CONFIG REQUIRED)
|
||||
+ if(0)
|
||||
+
|
||||
set(FREEIMAGE_DIR "NOT-SPECIFIED" CACHE PATH "Directory that contains the freeimage library and the corresponding headers.")
|
||||
#-----------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -90,6 +93,35 @@ function(FIND_FREEIMAGE_EXT)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
+ else()
|
||||
+ get_target_property(_FREEIMAGE_INCLUDE freeimage::FreeImage INTERFACE_INCLUDE_DIRECTORIES)
|
||||
+ get_target_property(_FREEIMAGE_DEPENDENCIES freeimage::FreeImage INTERFACE_LINK_LIBRARIES )
|
||||
+
|
||||
+ get_target_property(_FREEIMAGE_SHARED freeimage::FreeImage IMPORTED_LOCATION)
|
||||
+ if(NOT _FREEIMAGE_SHARED)
|
||||
+ get_target_property(_FREEIMAGE_SHARED freeimage::FreeImage IMPORTED_LOCATION_RELEASE)
|
||||
+ endif()
|
||||
+ if(NOT _FREEIMAGE_SHARED)
|
||||
+ get_target_property(_FREEIMAGE_SHARED freeimage::FreeImage IMPORTED_LOCATION_DEBUG)
|
||||
+ endif()
|
||||
+
|
||||
+ get_target_property(_FREEIMAGE_TYPE freeimage::FreeImage TYPE)
|
||||
+ if(${_FREEIMAGE_TYPE} STREQUAL "SHARED_LIBRARY")
|
||||
+ get_target_property(_FREEIMAGE_LIB freeimage::FreeImage IMPORTED_IMPLIB)
|
||||
+ if(NOT _FREEIMAGE_LIB)
|
||||
+ get_target_property(_FREEIMAGE_LIB freeimage::FreeImage IMPORTED_IMPLIB_RELEASE)
|
||||
+ endif()
|
||||
+ if(NOT _FREEIMAGE_LIB)
|
||||
+ get_target_property(_FREEIMAGE_LIB freeimage::FreeImage IMPORTED_IMPLIB_DEBUG)
|
||||
+ endif()
|
||||
+ endif()
|
||||
+
|
||||
+ find_file(_FREEIMAGE_HEADER_FILE "FreeImage.h"
|
||||
+ HINTS
|
||||
+ ${_FREEIMAGE_INCLUDE}
|
||||
+ )
|
||||
+ endif()
|
||||
+
|
||||
# error if dependencies can not be resolved
|
||||
if(NOT EXISTS ${_FREEIMAGE_INCLUDE} OR (WINDOWS AND NOT EXISTS ${_FREEIMAGE_LIB}) OR NOT EXISTS ${_FREEIMAGE_SHARED})
|
||||
message(STATUS "FREEIMAGE_DIR: ${FREEIMAGE_DIR}")
|
||||
|
|
@ -0,0 +1,171 @@
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 1f1902c..623bec8 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -53,6 +53,9 @@ option(MDL_LOG_FILE_DEPENDENCIES "Prints the list of files that is copied after
|
||||
set(MDL_ADDITIONAL_COMPILER_DEFINES "MDL_SOURCE_RELEASE" CACHE STRING "Additional compile defines that are passed to each of the projects")
|
||||
set(MDL_ADDITIONAL_COMPILER_OPTIONS "" CACHE STRING "Additional compile options that are passed to each of the projects")
|
||||
|
||||
+include(GNUInstallDirs)
|
||||
+include(CMakePackageConfigHelpers)
|
||||
+
|
||||
# set the default installation path
|
||||
if(NOT DEFINED CMAKE_INSTALL_PREFIX OR CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install CACHE PATH "..." FORCE)
|
||||
@@ -235,3 +238,35 @@ foreach(_TEST_POST ${MDL_TEST_LIST_POST})
|
||||
add_subdirectory(${_TEST_POST})
|
||||
endforeach()
|
||||
|
||||
+# Config
|
||||
+#--------------------------------------------------------------------------------------------------
|
||||
+
|
||||
+set(PATH_EXPORT_TARGETS "${CMAKE_INSTALL_DATADIR}/unofficial-mdl/unofficial-mdl-targets.cmake")
|
||||
+configure_package_config_file(
|
||||
+ "${CMAKE_CURRENT_SOURCE_DIR}/unofficial-mdl-config.cmake.in"
|
||||
+ "${CMAKE_CURRENT_BINARY_DIR}/unofficial-mdl-config.cmake"
|
||||
+ PATH_VARS
|
||||
+ PATH_EXPORT_TARGETS
|
||||
+ INSTALL_DESTINATION ${CMAKE_INSTALL_DATADIR}/unofficial-mdl
|
||||
+)
|
||||
+
|
||||
+write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/unofficial-mdl-config-version.cmake"
|
||||
+ VERSION 2021.0.1
|
||||
+ COMPATIBILITY SameMajorVersion
|
||||
+)
|
||||
+
|
||||
+# Install
|
||||
+#--------------------------------------------------------------------------------------------------
|
||||
+
|
||||
+install(
|
||||
+ EXPORT unofficial-mdl-targets
|
||||
+ NAMESPACE "unofficial::mdl::"
|
||||
+ DESTINATION "${CMAKE_INSTALL_DATADIR}/unofficial-mdl"
|
||||
+)
|
||||
+
|
||||
+install(
|
||||
+ FILES
|
||||
+ ${CMAKE_CURRENT_BINARY_DIR}/unofficial-mdl-config.cmake
|
||||
+ ${CMAKE_CURRENT_BINARY_DIR}/unofficial-mdl-config-version.cmake
|
||||
+ DESTINATION "${CMAKE_INSTALL_DATADIR}/unofficial-mdl"
|
||||
+)
|
||||
diff --git a/cmake/utilities.cmake b/cmake/utilities.cmake
|
||||
index 5e9774f..51dc65c 100644
|
||||
--- a/cmake/utilities.cmake
|
||||
+++ b/cmake/utilities.cmake
|
||||
@@ -705,6 +705,7 @@ function(CREATE_FROM_BASE_PRESET)
|
||||
# adjust output file name if requested
|
||||
if(CREATE_FROM_BASE_PRESET_OUTPUT_NAME)
|
||||
set_target_properties(${CREATE_FROM_BASE_PRESET_TARGET} PROPERTIES OUTPUT_NAME ${CREATE_FROM_BASE_PRESET_OUTPUT_NAME})
|
||||
+ set_target_properties(${CREATE_FROM_BASE_PRESET_TARGET} PROPERTIES EXPORT_NAME ${CREATE_FROM_BASE_PRESET_OUTPUT_NAME})
|
||||
endif()
|
||||
|
||||
# log message
|
||||
@@ -1143,6 +1144,15 @@ endfunction()
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
# basic install logic to copy the entire output folder
|
||||
|
||||
+set(_MDL_PROD_TARGETS
|
||||
+ prod-lib-mdl_core
|
||||
+ prod-lib-mdl_sdk
|
||||
+ prod-bin-i18n
|
||||
+ prod-bin-mdlc
|
||||
+ prod-bin-mdlm
|
||||
+ shaders-plugin-dds
|
||||
+ shaders-plugin-freeimage
|
||||
+)
|
||||
function(ADD_TARGET_INSTALL)
|
||||
set(options)
|
||||
set(oneValueArgs TARGET DESTINATION)
|
||||
@@ -1152,6 +1162,14 @@ function(ADD_TARGET_INSTALL)
|
||||
# - ADD_TARGET_INSTALL_TARGET
|
||||
# - ADD_TARGET_INSTALL_DESTINATION
|
||||
|
||||
+ if(${ADD_TARGET_INSTALL_TARGET} IN_LIST _MDL_PROD_TARGETS)
|
||||
+ install(
|
||||
+ TARGETS ${ADD_TARGET_INSTALL_TARGET}
|
||||
+ EXPORT unofficial-mdl-targets
|
||||
+ )
|
||||
+ return()
|
||||
+ endif()
|
||||
+
|
||||
install(DIRECTORY $<TARGET_FILE_DIR:${ADD_TARGET_INSTALL_TARGET}>/
|
||||
DESTINATION ${ADD_TARGET_INSTALL_DESTINATION}
|
||||
USE_SOURCE_PERMISSIONS
|
||||
|
||||
diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
|
||||
index 246303d..28934b4 100644
|
||||
--- a/include/CMakeLists.txt
|
||||
+++ b/include/CMakeLists.txt
|
||||
@@ -229,3 +229,8 @@ source_group("base" FILES ${PROJECT_HEADERS_BASE})
|
||||
source_group("math" FILES ${PROJECT_HEADERS_MATH})
|
||||
source_group("mdl" FILES ${PROJECT_HEADERS_MDL})
|
||||
source_group("neuraylib" FILES ${PROJECT_HEADERS_NEURAYLIB})
|
||||
+
|
||||
+install(
|
||||
+ DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/mi"
|
||||
+ TYPE INCLUDE
|
||||
+)
|
||||
diff --git a/src/prod/lib/mdl_core/CMakeLists.txt b/src/prod/lib/mdl_core/CMakeLists.txt
|
||||
index b60a1fc..3c3d2f4 100644
|
||||
--- a/src/prod/lib/mdl_core/CMakeLists.txt
|
||||
+++ b/src/prod/lib/mdl_core/CMakeLists.txt
|
||||
@@ -42,9 +42,15 @@ create_from_base_preset(
|
||||
EMBED_RC "mdl_core.rc"
|
||||
)
|
||||
|
||||
+target_include_directories(${PROJECT_NAME}
|
||||
+ PUBLIC
|
||||
+ $<INSTALL_INTERFACE:include>
|
||||
+)
|
||||
+
|
||||
# customize name
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "lib")
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "mdl_core")
|
||||
+set_target_properties(${PROJECT_NAME} PROPERTIES EXPORT_NAME "mdl_core")
|
||||
|
||||
if(MACOSX)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES SUFFIX ".so") # corresponding to the binary release
|
||||
diff --git a/src/prod/lib/mdl_sdk/CMakeLists.txt b/src/prod/lib/mdl_sdk/CMakeLists.txt
|
||||
index 6ddfc24..51c84e7 100644
|
||||
--- a/src/prod/lib/mdl_sdk/CMakeLists.txt
|
||||
+++ b/src/prod/lib/mdl_sdk/CMakeLists.txt
|
||||
@@ -44,9 +44,15 @@ create_from_base_preset(
|
||||
EMBED_RC "mdl_sdk.rc"
|
||||
)
|
||||
|
||||
+target_include_directories(${PROJECT_NAME}
|
||||
+ PUBLIC
|
||||
+ $<INSTALL_INTERFACE:include>
|
||||
+)
|
||||
+
|
||||
# customize name
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "lib")
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "mdl_sdk")
|
||||
+set_target_properties(${PROJECT_NAME} PROPERTIES EXPORT_NAME "mdl_sdk")
|
||||
|
||||
if(MACOSX)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES SUFFIX ".so") # corresponding to the binary release
|
||||
diff --git a/src/shaders/plugin/dds/CMakeLists.txt b/src/shaders/plugin/dds/CMakeLists.txt
|
||||
index 81558b0..179e1df 100644
|
||||
--- a/src/shaders/plugin/dds/CMakeLists.txt
|
||||
+++ b/src/shaders/plugin/dds/CMakeLists.txt
|
||||
@@ -65,6 +65,7 @@ create_from_base_preset(
|
||||
# customize name
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "")
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "dds")
|
||||
+set_target_properties(${PROJECT_NAME} PROPERTIES EXPORT_NAME "dds")
|
||||
|
||||
if(MACOSX)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES SUFFIX ".so") # corresponding to the binary release
|
||||
diff --git a/src/shaders/plugin/freeimage/CMakeLists.txt b/src/shaders/plugin/freeimage/CMakeLists.txt
|
||||
index b3ae039..a28b50e 100644
|
||||
--- a/src/shaders/plugin/freeimage/CMakeLists.txt
|
||||
+++ b/src/shaders/plugin/freeimage/CMakeLists.txt
|
||||
@@ -56,6 +56,7 @@ create_from_base_preset(
|
||||
# customize name
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "")
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "nv_freeimage")
|
||||
+set_target_properties(${PROJECT_NAME} PROPERTIES EXPORT_NAME "nv_freeimage")
|
||||
|
||||
if(MACOSX)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES SUFFIX ".so") # corresponding to the binary release
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/src/shaders/plugin/freeimage/freeimage_image_plugin_impl.cpp b/src/shaders/plugin/freeimage/freeimage_image_plugin_impl.cpp
|
||||
index ff79628..f22d05b 100644
|
||||
--- a/src/shaders/plugin/freeimage/freeimage_image_plugin_impl.cpp
|
||||
+++ b/src/shaders/plugin/freeimage/freeimage_image_plugin_impl.cpp
|
||||
@@ -270,7 +270,7 @@ Plugin_description g_plugin_list[] = {
|
||||
Plugin_description( "fi_cut" , FIF_CUT ),
|
||||
Plugin_description( "fi_dds" , FIF_DDS ),
|
||||
Plugin_description( "fi_exr" , FIF_EXR ),
|
||||
- Plugin_description( "fi_faxg3" , FIF_FAXG3 ),
|
||||
+ // Plugin_description( "fi_faxg3" , FIF_FAXG3 ), # not shipped with vcpkg
|
||||
Plugin_description( "fi_gif" , FIF_GIF ),
|
||||
Plugin_description( "fi_hdr" , FIF_HDR ),
|
||||
Plugin_description( "fi_ico" , FIF_ICO ),
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
diff --git a/src/api/api/neuray/neuray_class_factory.h b/src/api/api/neuray/neuray_class_factory.h
|
||||
index b8b5b55..c226458 100644
|
||||
--- a/src/api/api/neuray/neuray_class_factory.h
|
||||
+++ b/src/api/api/neuray/neuray_class_factory.h
|
||||
@@ -40,6 +40,7 @@
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
+#include <vector>
|
||||
|
||||
#include <boost/core/noncopyable.hpp>
|
||||
#include <base/data/serial/i_serial_classid.h>
|
||||
diff --git a/src/api/api/neuray/neuray_mdl_resource_callback.h b/src/api/api/neuray/neuray_mdl_resource_callback.h
|
||||
index 5439cfb..cd803fa 100644
|
||||
--- a/src/api/api/neuray/neuray_mdl_resource_callback.h
|
||||
+++ b/src/api/api/neuray/neuray_mdl_resource_callback.h
|
||||
@@ -35,6 +35,7 @@
|
||||
|
||||
#include <string>
|
||||
#include <map>
|
||||
+#include <vector>
|
||||
|
||||
#include <mi/base/handle.h>
|
||||
#include <mi/mdl/mdl_printers.h>
|
||||
diff --git a/src/base/util/registry/config_registry_impl.cpp b/src/base/util/registry/config_registry_impl.cpp
|
||||
index 01ad0c1..dd089ec 100644
|
||||
--- a/src/base/util/registry/config_registry_impl.cpp
|
||||
+++ b/src/base/util/registry/config_registry_impl.cpp
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <cctype>
|
||||
#include <ostream>
|
||||
#include <vector>
|
||||
+#include <algorithm>
|
||||
|
||||
namespace MI {
|
||||
namespace CONFIG {
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
diff --git a/src/io/scene/CMakeLists.txt b/src/io/scene/CMakeLists.txt
|
||||
index 5a0a1c6..37a0a19 100644
|
||||
--- a/src/io/scene/CMakeLists.txt
|
||||
+++ b/src/io/scene/CMakeLists.txt
|
||||
@@ -104,5 +104,10 @@ target_add_dependencies(TARGET ${PROJECT_NAME}
|
||||
boost
|
||||
)
|
||||
|
||||
+target_compile_definitions(${PROJECT_NAME}
|
||||
+ PRIVATE
|
||||
+ BOOST_UUID_FORCE_AUTO_LINK # for some reason this is not working while using vcpkg boost-uuid
|
||||
+)
|
||||
+
|
||||
# add tests if available
|
||||
add_tests(POST)
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
diff --git a/src/mdl/jit/llvm/CMakeLists.txt b/src/mdl/jit/llvm/CMakeLists.txt
|
||||
index 70f7f50..13857be 100644
|
||||
--- a/src/mdl/jit/llvm/CMakeLists.txt
|
||||
+++ b/src/mdl/jit/llvm/CMakeLists.txt
|
||||
@@ -289,11 +289,16 @@ endforeach()
|
||||
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
# set options for all other projects that are build in addition to the libs we need
|
||||
-set(ADDITIONAL_LLVM_TARGETS
|
||||
- obj.llvm-tblgen
|
||||
- llvm-tblgen
|
||||
+set(ADDITIONAL_LLVM_TARGETS
|
||||
+ llvm-tblgen
|
||||
)
|
||||
|
||||
+
|
||||
+# LLVM_ENABLE_OBJLIB cf. dist\cmake\modules\TableGen.cmake:125
|
||||
+if(NOT (CMAKE_GENERATOR STREQUAL "Ninja" AND NOT CMAKE_VERSION VERSION_LESS 3.9) AND NOT XCODE)
|
||||
+ list(APPEND ADDITIONAL_LLVM_TARGETS obj.llvm-tblgen)
|
||||
+endif()
|
||||
+
|
||||
foreach(_ADD_LLVM ${ADDITIONAL_LLVM_TARGETS})
|
||||
message(STATUS "setting flags for ${_ADD_LLVM}")
|
||||
llvm_target_setup(TARGET ${_ADD_LLVM})
|
||||
@@ -360,9 +365,10 @@ if(WINDOWS)
|
||||
)
|
||||
endif()
|
||||
|
||||
- set(_LLVM_EXCLUDE ${_LLVM_EXCLUDE}
|
||||
- LLVMVisualizers
|
||||
- )
|
||||
+ # LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION cf. dist\CMakeLists.txt:559
|
||||
+ if (MSVC_IDE AND NOT (MSVC_VERSION LESS 1900))
|
||||
+ list(APPEND _LLVM_EXCLUDE LLVMVisualizers)
|
||||
+ endif()
|
||||
endif()
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index def8fce..33dc3de 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -47,6 +47,8 @@ set(MDL_EXAMPLES_FOLDER ${CMAKE_SOURCE_DIR}/examples CACHE PATH "The folder that
|
||||
option(MDL_BUILD_SDK_EXAMPLES "Adds MDL SDK examples to the build." ON)
|
||||
option(MDL_BUILD_CORE_EXAMPLES "Adds MDL Core examples to the build." ON)
|
||||
option(MDL_BUILD_ARNOLD_PLUGIN "Enable the build of the MDL Arnold plugin." OFF)
|
||||
+option(MDL_BUILD_DDS_PLUGIN "Enable the build of the MDL DDS image plugin." ON)
|
||||
+option(MDL_BUILD_FREEIMAGE_PLUGIN "Enable the build of the MDL Freeimage image plugin." ON)
|
||||
option(MDL_LOG_PLATFORM_INFOS "Prints some infos about the current build system (relevant for error reports)." ON)
|
||||
option(MDL_LOG_DEPENDENCIES "Prints the list of dependencies during the generation step." OFF)
|
||||
option(MDL_LOG_FILE_DEPENDENCIES "Prints the list of files that is copied after a successful build." OFF)
|
||||
@@ -148,8 +150,12 @@ add_subdirectory(${MDL_SRC_FOLDER}/prod/bin/mdlm)
|
||||
|
||||
# PLUGINS
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
-add_subdirectory(${MDL_SRC_FOLDER}/shaders/plugin/dds)
|
||||
-add_subdirectory(${MDL_SRC_FOLDER}/shaders/plugin/freeimage)
|
||||
+if(MDL_BUILD_DDS_PLUGIN)
|
||||
+ add_subdirectory(${MDL_SRC_FOLDER}/shaders/plugin/dds)
|
||||
+endif()
|
||||
+if(MDL_BUILD_FREEIMAGE_PLUGIN)
|
||||
+ add_subdirectory(${MDL_SRC_FOLDER}/shaders/plugin/freeimage)
|
||||
+endif()
|
||||
|
||||
# EXAMPLES
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
diff --git a/cmake/utilities.cmake b/cmake/utilities.cmake
|
||||
index ecdb672..74f54e0 100644
|
||||
--- a/cmake/utilities.cmake
|
||||
+++ b/cmake/utilities.cmake
|
||||
@@ -1148,9 +1148,13 @@ set(_MDL_PROD_TARGETS
|
||||
prod-bin-i18n
|
||||
prod-bin-mdlc
|
||||
prod-bin-mdlm
|
||||
- shaders-plugin-dds
|
||||
- shaders-plugin-freeimage
|
||||
)
|
||||
+if(MDL_BUILD_DDS_PLUGIN)
|
||||
+ list(APPEND _MDL_PROD_TARGETS shaders-plugin-dds)
|
||||
+endif()
|
||||
+if(MDL_BUILD_FREEIMAGE_PLUGIN)
|
||||
+ list(APPEND _MDL_PROD_TARGETS shaders-plugin-freeimage)
|
||||
+endif()
|
||||
function(ADD_TARGET_INSTALL)
|
||||
set(options)
|
||||
set(oneValueArgs TARGET DESTINATION)
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
diff --git a/src/mdl/jit/llvm/dist/cmake/modules/AddLLVM.cmake b/src/mdl/jit/llvm/dist/cmake/modules/AddLLVM.cmake
|
||||
index ce2057f..7ad8dfe 100644
|
||||
--- a/src/mdl/jit/llvm/dist/cmake/modules/AddLLVM.cmake
|
||||
+++ b/src/mdl/jit/llvm/dist/cmake/modules/AddLLVM.cmake
|
||||
@@ -616,11 +616,7 @@ macro(add_llvm_library name)
|
||||
""
|
||||
""
|
||||
${ARGN})
|
||||
- if( BUILD_SHARED_LIBS OR ARG_SHARED )
|
||||
- llvm_add_library(${name} SHARED ${ARG_UNPARSED_ARGUMENTS})
|
||||
- else()
|
||||
- llvm_add_library(${name} ${ARG_UNPARSED_ARGUMENTS})
|
||||
- endif()
|
||||
+ llvm_add_library(${name} STATIC ${ARG_UNPARSED_ARGUMENTS})
|
||||
|
||||
# Libraries that are meant to only be exposed via the build tree only are
|
||||
# never installed and are only exported as a target in the special build tree
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/cmake/dependencies/add_llvm.cmake b/cmake/dependencies/add_llvm.cmake
|
||||
index e477c57..0e323d0 100644
|
||||
--- a/cmake/dependencies/add_llvm.cmake
|
||||
+++ b/cmake/dependencies/add_llvm.cmake
|
||||
@@ -100,7 +100,7 @@ set(_LLVM_LIB_NAMES
|
||||
LLVMSupport
|
||||
)
|
||||
|
||||
-target_include_directories(${__TARGET_ADD_DEPENDENCY_TARGET}
|
||||
+target_include_directories(${__TARGET_ADD_DEPENDENCY_TARGET} BEFORE
|
||||
PRIVATE
|
||||
${mdl-jit-llvm_SOURCE_DIR}/dist/include
|
||||
${mdl-jit-llvm_BINARY_DIR}/dist/include
|
||||
|
|
@ -0,0 +1,144 @@
|
|||
vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
|
||||
|
||||
# Notes on Clang 7 binary download:
|
||||
# MDL-SDK requires Clang version 7.0.0 previsely as a *build tool* not as a *source compiler* as it is usually used.
|
||||
# This ports provides CMake instructions to fetch and use it to build this port - and only for this purpose:
|
||||
# it will not be installed and as such not be usable by any other ports.
|
||||
#
|
||||
# More details on the why below:
|
||||
# MDL-SDK supports its own source file format (NVIDIA MDL sources `.mdl`), and can codegen executable code at runtime using its own vendored and modified version of LLVM 7.0.0.
|
||||
# Also, at buildtime MDL-SDK also "pre-compile" MDL core libraries as LLVM bitcode directly into its binaries (through generated c array in headers) using this very Clang 7.0.0.
|
||||
# To have everything working together, we have to use a Clang as build tool which match the vendored LLVM version so that LLVM bitcode can be loaded/linked properly as it is not compatible across MLLVM versions.
|
||||
|
||||
# Clang 7 build tool
|
||||
|
||||
set(LLVM_VERSION 7.0.0)
|
||||
set(LLVM_BASE_URL "https://releases.llvm.org/${LLVM_VERSION}")
|
||||
|
||||
if(VCPKG_HOST_IS_WINDOWS)
|
||||
set(LLVM_FILENAME "LLVM-${LLVM_VERSION}-win64.exe")
|
||||
set(LLVM_HASH c2b1342469275279f833fdc1e17ba5a9f99021306d6ab3d7209822a01d690767739eebf92fd9f23a44de5c5d00260fed50d5262b23a8eccac55b8ae901e2815c)
|
||||
elseif(VCPKG_HOST_IS_LINUX)
|
||||
set(LLVM_FILENAME "clang+llvm-${LLVM_VERSION}-x86_64-linux-gnu-ubuntu-16.04.tar.xz")
|
||||
set(LLVM_HASH fb3dc588137426dc28a20ef5e34e9341b18114f03bf7d83fafbb301efbfd801bba08615b804817c80252e366de9d2f8efbef034e53a1b885b34c86c2fbbf9c28)
|
||||
elseif(VCPKG_HOST_IS_FREEBSD)
|
||||
set(LLVM_FILENAME "clang+llvm-${LLVM_VERSION}-amd64-unknown-freebsd11.tar.xz")
|
||||
set(LLVM_HASH d501484c38cfced196128866a19f7fef1e0b5d609ea050d085b7deab04ac8cc2bbf74b3cfe6cd90d8ea17a1d9cfca028a6c933f0736153ba48785ddc8646574f)
|
||||
elseif(VCPKG_HOST_IS_OSX)
|
||||
set(LLVM_FILENAME "clang+llvm-${LLVM_VERSION}-x86_64-apple-darwin.tar.xz")
|
||||
set(LLVM_HASH c5ca6a7756e0cecdf78d4d0c522fe7e803d4b1b2049cb502a034fe8f5ca30fcbf0e738ebfbc89c87de8adcd90ea64f637eb82e9130bb846b43b91f67dfa4b916)
|
||||
else()
|
||||
message(FATAL_ERROR "Pre-built binaries for Clang 7 not available, aborting install (platform: ${VCPKG_CMAKE_SYSTEM_NAME}).")
|
||||
endif()
|
||||
|
||||
vcpkg_download_distfile(LLVM_ARCHIVE_PATH
|
||||
URLS "${LLVM_BASE_URL}/${LLVM_FILENAME}"
|
||||
SHA512 ${LLVM_HASH}
|
||||
FILENAME "${LLVM_FILENAME}"
|
||||
)
|
||||
|
||||
if(VCPKG_TARGET_IS_WINDOWS)
|
||||
get_filename_component(LLVM_BASENAME "${LLVM_FILENAME}" NAME_WE)
|
||||
set(LLVM_DIRECTORY "${CURRENT_BUILDTREES_DIR}/src/${LLVM_BASENAME}")
|
||||
file(REMOVE_RECURSE "${LLVM_DIRECTORY}")
|
||||
file(MAKE_DIRECTORY "${LLVM_DIRECTORY}")
|
||||
|
||||
vcpkg_find_acquire_program(7Z)
|
||||
vcpkg_execute_in_download_mode(
|
||||
COMMAND ${7Z} x
|
||||
"${LLVM_ARCHIVE_PATH}"
|
||||
"-o${LLVM_DIRECTORY}"
|
||||
-y -bso0 -bsp0
|
||||
WORKING_DIRECTORY "${LLVM_DIRECTORY}"
|
||||
)
|
||||
else()
|
||||
vcpkg_extract_source_archive(LLVM_DIRECTORY
|
||||
ARCHIVE "${LLVM_ARCHIVE_PATH}"
|
||||
SOURCE_BASE "clang+llvm-${LLVM_VERSION}"
|
||||
)
|
||||
endif()
|
||||
|
||||
set(LLVM_CLANG7 "${LLVM_DIRECTORY}/bin/clang${VCPKG_HOST_EXECUTABLE_SUFFIX}")
|
||||
if(NOT EXISTS "${LLVM_CLANG7}")
|
||||
message(FATAL_ERROR "Missing required build tool clang 7, please check your setup.")
|
||||
endif()
|
||||
|
||||
# MDL-SDK
|
||||
|
||||
vcpkg_from_github(
|
||||
OUT_SOURCE_PATH SOURCE_PATH
|
||||
REPO NVIDIA/MDL-SDK
|
||||
REF d6c9a6560265025a30d16fcd9d664f830ab63109
|
||||
SHA512 d6161a317ca0fd3cf8c782f058fc43765d611b5f6a8e82da736f5164a0e1829a46f75e376715fcb7cb9521406365aa88880ed44235b2bf63899affcc5bd54091
|
||||
HEAD_REF master
|
||||
PATCHES
|
||||
001-freeimage-from-vcpkg.patch
|
||||
002-install-rules.patch
|
||||
003-freeimage-disable-faxg3.patch
|
||||
004-missing-std-includes.patch
|
||||
005-missing-link-windows-crypt-libraries.patch
|
||||
006-guard-nonexisting-targets.patch
|
||||
007-plugin-options.patch
|
||||
008-build-static-llvm.patch
|
||||
009-include-priority-vendored-llvm.patch
|
||||
)
|
||||
|
||||
string(COMPARE NOTEQUAL "${VCPKG_CRT_LINKAGE}" "static" _MVSC_CRT_LINKAGE_OPTION)
|
||||
|
||||
vcpkg_find_acquire_program(PYTHON3)
|
||||
|
||||
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
|
||||
FEATURES
|
||||
dds MDL_BUILD_DDS_PLUGIN
|
||||
freeimage MDL_BUILD_FREEIMAGE_PLUGIN
|
||||
)
|
||||
|
||||
file(COPY "${CMAKE_CURRENT_LIST_DIR}/unofficial-mdl-config.cmake.in" DESTINATION "${SOURCE_PATH}")
|
||||
|
||||
vcpkg_cmake_configure(
|
||||
SOURCE_PATH "${SOURCE_PATH}"
|
||||
OPTIONS
|
||||
-DMDL_LOG_DEPENDENCIES:BOOL=ON
|
||||
|
||||
-DMDL_MSVC_DYNAMIC_RUNTIME_EXAMPLES:BOOL=${_MVSC_CRT_LINKAGE_OPTION}
|
||||
|
||||
-DMDL_ENABLE_CUDA_EXAMPLES:BOOL=OFF
|
||||
-DMDL_ENABLE_OPENGL_EXAMPLES:BOOL=OFF
|
||||
-DMDL_ENABLE_QT_EXAMPLES:BOOL=OFF
|
||||
-DMDL_ENABLE_D3D12_EXAMPLES:BOOL=OFF
|
||||
-DMDL_ENABLE_OPTIX7_EXAMPLES:BOOL=OFF
|
||||
-DMDL_ENABLE_MATERIALX:BOOL=OFF
|
||||
|
||||
-DMDL_BUILD_SDK_EXAMPLES:BOOL=OFF
|
||||
-DMDL_BUILD_CORE_EXAMPLES:BOOL=OFF
|
||||
-DMDL_BUILD_ARNOLD_PLUGIN:BOOL=OFF
|
||||
|
||||
-Dpython_PATH:PATH=${PYTHON3}
|
||||
-Dclang_PATH:PATH=${LLVM_CLANG7}
|
||||
|
||||
${FEATURE_OPTIONS}
|
||||
|
||||
MAYBE_UNUSED_VARIABLES
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_GLEW=ON
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_glfw3=ON
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=ON
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_OCaml=ON
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_OpenGL=ON
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_Qt5=ON
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_Subversion=ON
|
||||
)
|
||||
|
||||
vcpkg_cmake_install()
|
||||
|
||||
vcpkg_copy_pdbs()
|
||||
vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-mdl)
|
||||
vcpkg_copy_tools(
|
||||
TOOL_NAMES i18n mdlc mdlm
|
||||
AUTO_CLEAN
|
||||
)
|
||||
|
||||
file(REMOVE_RECURSE
|
||||
"${CURRENT_PACKAGES_DIR}/debug/include"
|
||||
)
|
||||
|
||||
file(INSTALL "${SOURCE_PATH}/LICENSE.md" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
@PACKAGE_INIT@
|
||||
|
||||
include(CMakeFindDependencyMacro)
|
||||
|
||||
find_dependency(Boost)
|
||||
find_dependency(freeimage CONFIG)
|
||||
find_dependency(OpenGL)
|
||||
|
||||
include("@PACKAGE_PATH_EXPORT_TARGETS@")
|
||||
check_required_components("@PROJECT_NAME@")
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"name": "mdl-sdk",
|
||||
"version": "2021.1.2",
|
||||
"description": "NVIDIA Material Definition Language SDK",
|
||||
"homepage": "https://github.com/NVIDIA/MDL-SDK",
|
||||
"license": "BSD-3-Clause",
|
||||
"supports": "!arm & !x86 & !(windows & static)",
|
||||
"dependencies": [
|
||||
"boost-algorithm",
|
||||
"boost-any",
|
||||
"boost-bind",
|
||||
"boost-core",
|
||||
"boost-function",
|
||||
"boost-functional",
|
||||
"boost-smart-ptr",
|
||||
"boost-tokenizer",
|
||||
"boost-unordered",
|
||||
"boost-uuid",
|
||||
"freeimage",
|
||||
"opengl",
|
||||
{
|
||||
"name": "vcpkg-cmake",
|
||||
"host": true
|
||||
},
|
||||
{
|
||||
"name": "vcpkg-cmake-config",
|
||||
"host": true
|
||||
}
|
||||
],
|
||||
"features": {
|
||||
"dds": {
|
||||
"description": "Build image plugin for DDS"
|
||||
},
|
||||
"freeimage": {
|
||||
"description": "Build image plugin for various image formats using Freeimage",
|
||||
"dependencies": [
|
||||
"freeimage"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4692,6 +4692,10 @@
|
|||
"baseline": "2.7.2.14",
|
||||
"port-version": 3
|
||||
},
|
||||
"mdl-sdk": {
|
||||
"baseline": "2021.1.2",
|
||||
"port-version": 0
|
||||
},
|
||||
"mdns": {
|
||||
"baseline": "1.4.2",
|
||||
"port-version": 0
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"git-tree": "1ea6f971b1824f51c7beed4983f54733b24f1bed",
|
||||
"version": "2021.1.2",
|
||||
"port-version": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Reference in New Issue