127 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
		
		
			
		
	
	
			127 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| 
								 | 
							
								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()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(FLATC_EXEC ${CURRENT_HOST_INSTALLED_DIR}/tools/flatbuffers/flatc${VCPKG_HOST_EXECUTABLE_SUFFIX})
							 | 
						||
| 
								 | 
							
								if (NOT EXISTS "${FLATC_EXEC}")
							 | 
						||
| 
								 | 
							
								    message(FATAL_ERROR "Expected ${FLATC_EXEC} to exist.")
							 | 
						||
| 
								 | 
							
								endif()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# regenerate some code files by schemes and flatbuffers
							 | 
						||
| 
								 | 
							
								vcpkg_execute_build_process(
							 | 
						||
| 
								 | 
							
								    COMMAND "${FLATC_EXEC}" "-c" "-b" "--gen-object-api" "--reflect-names"
							 | 
						||
| 
								 | 
							
								        "../default/BasicOptimizer.fbs"
							 | 
						||
| 
								 | 
							
								        "../default/CaffeOp.fbs"
							 | 
						||
| 
								 | 
							
								        "../default/GpuLibrary.fbs"
							 | 
						||
| 
								 | 
							
								        "../default/MNN.fbs"
							 | 
						||
| 
								 | 
							
								        "../default/Tensor.fbs"
							 | 
						||
| 
								 | 
							
								        "../default/TensorflowOp.fbs"
							 | 
						||
| 
								 | 
							
								        "../default/TFQuantizeOp.fbs"
							 | 
						||
| 
								 | 
							
								        "../default/Type.fbs"
							 | 
						||
| 
								 | 
							
								        "../default/UserDefine.fbs"
							 | 
						||
| 
								 | 
							
								    WORKING_DIRECTORY "${SOURCE_PATH}/schema/current/"
							 | 
						||
| 
								 | 
							
								    LOGNAME flatc-${TARGET_TRIPLET}
							 | 
						||
| 
								 | 
							
								  )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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()
							 |