vcpkg/ports/mnn/portfile.cmake
Park DongHa b35f1edc23
[mnn,flatbuffers] add a new port and patch (#15717)
* [mnn] add a new port

* create a patch, embed copyright
* touching install options

* [mnn] fix windows install

* feature cuda reqires cudnn

* [flatbuffers] add patch for TableKeyComparator

* update port SHA

* [mnn] disable arm support

* [mnn] update port SHA

* patch creates version config.cmake
* run vcpkg_copy_tools for 'tools' feature

* [mnn] remove bin when non-Windows

* make PREFER_NINJA optional for 'cuda' feature

* [mnn] fix wrong macro

* [mnn] rename install path to lowercase

* [mnn] make 'metal' feature optional

* update port SHA

* [mnn] apply PR feedback

* Move build options into vcpkg_check_features
* Download Apache-2.0 licence instead of local file

* [mnn] remove code patch for Windows

* this will break `mnn[tools]` for `windows` triplet

* [mnn] remove code changes in the patch

* [mnn] remove version.cmake generation

* possibly break osx build with the chnage

* Update ports/mnn/portfile.cmake

* Update versions/m-/mnn.json

* [mnn] apply PR feedback

* find_package(CUDNN) in patch
* use vcpkg_download_distfile
* ONLY_STATIC_LIBRARY for Windows

* [mnn] create share folder and move copyright

* [mnn] update git-tree SHA

* Update ports/mnn/portfile.cmake

Co-authored-by: Robert Schumacher <roschuma@microsoft.com>

* [mnn] update git-tree SHA

Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
2021-03-23 14:38:59 -07:00

106 lines
3.8 KiB
CMake

vcpkg_fail_port_install(ON_ARCH "arm" ON_TARGET "uwp" "ios" "android")
if(VCPKG_TARGET_IS_WINDOWS)
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
endif()
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO alibaba/MNN
REF 1.1.0
SHA512 3e31eec9a876be571cb2d29e0a2bcdb8209a43a43a5eeae19b295fadfb1252dd5bd4ed5b7c584706171e1b531710248193bc04520a796963e2b21546acbedae0
HEAD_REF master
PATCHES
use-package-and-install.patch
)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
test MNN_BUILD_TEST
test MNN_BUILD_BENCHMARK
cuda MNN_CUDA
cuda MNN_GPU_TRACE
vulkan MNN_VULKAN
vulkan MNN_GPU_TRACE
vulkan MNN_USE_SYSTEM_LIB
opencl MNN_OPENCL
opencl MNN_USE_SYSTEM_LIB
metal MNN_METAL
metal MNN_GPU_TRACE
tools MNN_BUILD_TOOLS
tools MNN_BUILD_QUANTOOLS
tools MNN_BUILD_TRAIN
tools MNN_EVALUATION
tools MNN_BUILD_CONVERTER
)
# 'cuda' feature in Windows failes with Ninja because of parallel PDB access. Make it optional
set(NINJA_OPTION PREFER_NINJA)
if("cuda" IN_LIST FEATURES)
unset(NINJA_OPTION)
endif()
if(VCPKG_TARGET_IS_WINDOWS)
string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" USE_RUNTIME_MT)
list(APPEND PLATFORM_OPTIONS -DMNN_WIN_RUNTIME_MT=${USE_RUNTIME_MT})
endif()
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" BUILD_SHARED)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
${NINJA_OPTION}
OPTIONS
${FEATURE_OPTIONS} ${PLATFORM_OPTIONS}
-DMNN_BUILD_SHARED_LIBS=${BUILD_SHARED}
# 1.1.0.0-${commit}
-DMNN_VERSION_MAJOR=1 -DMNN_VERSION_MINOR=1 -DMNN_VERSION_PATCH=0 -DMNN_VERSION_BUILD=0 -DMNN_VERSION_SUFFIX=-d6795ad
OPTIONS_DEBUG
-DMNN_DEBUG_MEMORY=ON -DMNN_DEBUG_TENSOR_SIZE=ON
)
vcpkg_install_cmake()
vcpkg_copy_pdbs()
vcpkg_download_distfile(COPYRIGHT_PATH
URLS "https://apache.org/licenses/LICENSE-2.0.txt"
FILENAME 98f6b79b778f7b0a1541.txt
SHA512 98f6b79b778f7b0a15415bd750c3a8a097d650511cb4ec8115188e115c47053fe700f578895c097051c9bc3dfb6197c2b13a15de203273e1a3218884f86e90e8
)
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/share/${PORT})
file(RENAME ${COPYRIGHT_PATH} ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright)
if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS)
if("metal" IN_LIST FEATURES)
file(RENAME ${CURRENT_PACKAGES_DIR}/bin/mnn.metallib
${CURRENT_PACKAGES_DIR}/share/${PORT}/mnn.metallib)
endif()
else()
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/share/${PORT})
endif()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
if("test" IN_LIST FEATURES)
# no install(TARGETS) for the following binaries. check the buildtrees...
# vcpkg_copy_tools(
# TOOL_NAMES run_test.out benchmark.out benchmarkExprModels.out # test/
# AUTO_CLEAN
# )
endif()
if("tools" IN_LIST FEATURES)
vcpkg_copy_tools(
TOOL_NAMES MNNV2Basic.out mobilenetTest.out backendTest.out testModel.out testModelWithDescrisbe.out getPerformance.out checkInvalidValue.out timeProfile.out # tools/cpp
quantized.out # tools/quantization
classficationTopkEval.out # tools/evaluation
MNNDump2Json MNNConvert # tools/converter
transformer.out train.out dataTransformer.out runTrainDemo.out # tools/train
AUTO_CLEAN
)
if(BUILD_SHARED)
vcpkg_copy_tools(TOOL_NAMES TestConvertResult AUTO_CLEAN) # tools/converter
endif()
endif()
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
# remove the others. ex) mnn.metallib
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin
${CURRENT_PACKAGES_DIR}/debug/bin)
endif()