aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/qnnpack
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/qnnpack
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/qnnpack')
-rw-r--r--vcpkg/ports/qnnpack/fix-arm64-osx.patch18
-rw-r--r--vcpkg/ports/qnnpack/portfile.cmake23
-rw-r--r--vcpkg/ports/qnnpack/use-packages.patch148
-rw-r--r--vcpkg/ports/qnnpack/vcpkg.json25
4 files changed, 214 insertions, 0 deletions
diff --git a/vcpkg/ports/qnnpack/fix-arm64-osx.patch b/vcpkg/ports/qnnpack/fix-arm64-osx.patch
new file mode 100644
index 0000000..2b13997
--- /dev/null
+++ b/vcpkg/ports/qnnpack/fix-arm64-osx.patch
@@ -0,0 +1,18 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -32,12 +32,15 @@
+ IF(NOT IOS_ARCH MATCHES "^(i386|x86_64|armv7.*|arm64.*)$")
+ MESSAGE(FATAL_ERROR "Unrecognized IOS_ARCH = ${IOS_ARCH}")
+ ENDIF()
+ ELSE()
+ MESSAGE(FATAL_ERROR "CMAKE_SYSTEM_PROCESSOR is not defined")
+ ENDIF()
++ELSEIF(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
++ # on macOS, arm64 is called arm64
++ SET(CMAKE_SYSTEM_PROCESSOR "aarch64")
+ ELSEIF(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^(i[3-6]86|x86_64|armv[5-8].*|aarch64)$")
+ MESSAGE(FATAL_ERROR "Unrecognized CMAKE_SYSTEM_PROCESSOR = ${CMAKE_SYSTEM_PROCESSOR}")
+ ENDIF()
+
+ IF(NOT CMAKE_SYSTEM_NAME)
+ MESSAGE(FATAL_ERROR "CMAKE_SYSTEM_NAME not defined")
diff --git a/vcpkg/ports/qnnpack/portfile.cmake b/vcpkg/ports/qnnpack/portfile.cmake
new file mode 100644
index 0000000..157d47e
--- /dev/null
+++ b/vcpkg/ports/qnnpack/portfile.cmake
@@ -0,0 +1,23 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO pytorch/QNNPACK
+ REF 7d2a4e9931a82adc3814275b6219a03e24e36b4c
+ SHA512 437a835acfedae851a9a8572fa6eea9854dcb8bcca499bc4a2582314e44f5f199778e857932da4aecf943bea7cb2eb5b1c41d4b4ca6075bddbe0f18b2c7b9127
+ HEAD_REF master
+ PATCHES
+ use-packages.patch
+ fix-arm64-osx.patch
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DQNNPACK_BUILD_TESTS=OFF
+ -DQNNPACK_BUILD_BENCHMARKS=OFF
+)
+vcpkg_cmake_install()
+
+file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/debug/bin"
+)
diff --git a/vcpkg/ports/qnnpack/use-packages.patch b/vcpkg/ports/qnnpack/use-packages.patch
new file mode 100644
index 0000000..7cdb68d
--- /dev/null
+++ b/vcpkg/ports/qnnpack/use-packages.patch
@@ -0,0 +1,148 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 932f9e7..187be72 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -13,8 +13,6 @@ PROJECT(QNNPACK C CXX ASM)
+
+ # ---[ Options.
+ OPTION(QNNPACK_CUSTOM_THREADPOOL "Build QNNPACK for custom thread pool" OFF)
+-SET(QNNPACK_LIBRARY_TYPE "default" CACHE STRING "Type of library (shared, static, or default) to build")
+-SET_PROPERTY(CACHE QNNPACK_LIBRARY_TYPE PROPERTY STRINGS default static shared)
+ OPTION(QNNPACK_BUILD_TESTS "Build QNNPACK unit tests" ON)
+ OPTION(QNNPACK_BUILD_BENCHMARKS "Build QNNPACK benchmarks" ON)
+
+@@ -60,7 +58,7 @@ IF(NOT DEFINED CLOG_SOURCE_DIR)
+ SET(CLOG_SOURCE_DIR "${PROJECT_SOURCE_DIR}/deps/clog")
+ ENDIF()
+
+-IF(NOT DEFINED CPUINFO_SOURCE_DIR)
++IF(FALSE)
+ MESSAGE(STATUS "Downloading cpuinfo to ${CONFU_DEPENDENCIES_SOURCE_DIR}/cpuinfo (define CPUINFO_SOURCE_DIR to avoid it)")
+ CONFIGURE_FILE(cmake/DownloadCpuinfo.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/cpuinfo-download/CMakeLists.txt")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+@@ -70,7 +68,7 @@ IF(NOT DEFINED CPUINFO_SOURCE_DIR)
+ SET(CPUINFO_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/cpuinfo" CACHE STRING "cpuinfo source directory")
+ ENDIF()
+
+-IF(NOT DEFINED FP16_SOURCE_DIR)
++IF(FALSE)
+ MESSAGE(STATUS "Downloading FP16 to ${CONFU_DEPENDENCIES_SOURCE_DIR}/fp16 (define FP16_SOURCE_DIR to avoid it)")
+ CONFIGURE_FILE(cmake/DownloadFP16.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/fp16-download/CMakeLists.txt")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+@@ -80,7 +78,7 @@ IF(NOT DEFINED FP16_SOURCE_DIR)
+ SET(FP16_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/fp16" CACHE STRING "FP16 source directory")
+ ENDIF()
+
+-IF(NOT DEFINED FXDIV_SOURCE_DIR)
++IF(FALSE)
+ MESSAGE(STATUS "Downloading FXdiv to ${CONFU_DEPENDENCIES_SOURCE_DIR}/fxdiv (define FXDIV_SOURCE_DIR to avoid it)")
+ CONFIGURE_FILE(cmake/DownloadFXdiv.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/fxdiv-download/CMakeLists.txt")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+@@ -90,7 +88,7 @@ IF(NOT DEFINED FXDIV_SOURCE_DIR)
+ SET(FXDIV_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/fxdiv" CACHE STRING "FXdiv source directory")
+ ENDIF()
+
+-IF(NOT DEFINED PSIMD_SOURCE_DIR)
++IF(FALSE)
+ MESSAGE(STATUS "Downloading PSimd to ${CONFU_DEPENDENCIES_SOURCE_DIR}/psimd (define PSIMD_SOURCE_DIR to avoid it)")
+ CONFIGURE_FILE(cmake/DownloadPSimd.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/psimd-download/CMakeLists.txt")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+@@ -100,7 +98,7 @@ IF(NOT DEFINED PSIMD_SOURCE_DIR)
+ SET(PSIMD_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/psimd" CACHE STRING "PSimd source directory")
+ ENDIF()
+
+-IF(NOT DEFINED PTHREADPOOL_SOURCE_DIR)
++IF(FALSE)
+ MESSAGE(STATUS "Downloading pthreadpool to ${CONFU_DEPENDENCIES_SOURCE_DIR}/pthreadpool (define PTHREADPOOL_SOURCE_DIR to avoid it)")
+ CONFIGURE_FILE(cmake/DownloadPThreadPool.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/pthreadpool-download/CMakeLists.txt")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+@@ -110,7 +108,7 @@ IF(NOT DEFINED PTHREADPOOL_SOURCE_DIR)
+ SET(PTHREADPOOL_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/pthreadpool" CACHE STRING "pthreadpool source directory")
+ ENDIF()
+
+-IF(QNNPACK_BUILD_TESTS AND NOT DEFINED GOOGLETEST_SOURCE_DIR)
++IF(FALSE)
+ MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)")
+ CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+@@ -120,7 +118,7 @@ IF(QNNPACK_BUILD_TESTS AND NOT DEFINED GOOGLETEST_SOURCE_DIR)
+ SET(GOOGLETEST_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest" CACHE STRING "Google Test source directory")
+ ENDIF()
+
+-IF(QNNPACK_BUILD_BENCHMARKS AND NOT DEFINED GOOGLEBENCHMARK_SOURCE_DIR)
++IF(FALSE)
+ MESSAGE(STATUS "Downloading Google Benchmark to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googlebenchmark (define GOOGLEBENCHMARK_SOURCE_DIR to avoid it)")
+ CONFIGURE_FILE(cmake/DownloadGoogleBenchmark.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark-download/CMakeLists.txt")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+@@ -232,15 +230,7 @@ IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i[3-6]86|x86_64)$" OR IOS_ARCH MATCHES "^(i
+ LIST(APPEND QNNPACK_UKERNELS ${QNNPACK_X86_SSE2_UKERNELS})
+ ENDIF()
+
+-IF(QNNPACK_LIBRARY_TYPE STREQUAL "default")
+- ADD_LIBRARY(qnnpack ${QNNPACK_INIT_SRCS} ${QNNPACK_EXEC_SRCS} ${QNNPACK_UKERNELS})
+-ELSEIF(QNNPACK_LIBRARY_TYPE STREQUAL "shared")
+- ADD_LIBRARY(qnnpack SHARED ${QNNPACK_INIT_SRCS} ${QNNPACK_EXEC_SRCS} ${QNNPACK_UKERNELS})
+-ELSEIF(QNNPACK_LIBRARY_TYPE STREQUAL "static")
+- ADD_LIBRARY(qnnpack STATIC ${QNNPACK_INIT_SRCS} ${QNNPACK_EXEC_SRCS} ${QNNPACK_UKERNELS})
+-ELSE()
+- MESSAGE(FATAL_ERROR "Unsupported QNNPACK library type \"${QNNPACK_LIBRARY_TYPE}\". Must be \"static\", \"shared\", or \"default\"")
+-ENDIF()
++ADD_LIBRARY(qnnpack ${QNNPACK_INIT_SRCS} ${QNNPACK_EXEC_SRCS} ${QNNPACK_UKERNELS})
+ SET_TARGET_PROPERTIES(qnnpack PROPERTIES
+ C_STANDARD 99
+ C_EXTENSIONS YES)
+@@ -274,6 +264,10 @@ TARGET_INCLUDE_DIRECTORIES(qnnpack PUBLIC include)
+ TARGET_INCLUDE_DIRECTORIES(qnnpack PRIVATE src)
+ SET_TARGET_PROPERTIES(qnnpack PROPERTIES PUBLIC_HEADER include/qnnpack.h)
+
++find_package(cpuinfo CONFIG REQUIRED)
++add_library(cpuinfo ALIAS cpuinfo::cpuinfo)
++add_library(clog ALIAS cpuinfo::clog)
++
+ # ---[ Configure clog
+ IF(NOT TARGET clog)
+ SET(CLOG_BUILD_TESTS OFF CACHE BOOL "")
+@@ -299,6 +293,8 @@ ENDIF()
+ TARGET_LINK_LIBRARIES(qnnpack PRIVATE cpuinfo)
+
+ # ---[ Configure pthreadpool
++find_package(unofficial-pthreadpool CONFIG REQUIRED)
++add_library(pthreadpool ALIAS unofficial::pthreadpool)
+ IF(NOT TARGET pthreadpool)
+ SET(PTHREADPOOL_BUILD_TESTS OFF CACHE BOOL "")
+ SET(PTHREADPOOL_BUILD_BENCHMARKS OFF CACHE BOOL "")
+@@ -315,6 +311,8 @@ ELSE()
+ ENDIF()
+
+ # ---[ Configure FXdiv
++find_package(unofficial-fxdiv CONFIG REQUIRED)
++add_library(fxdiv ALIAS unofficial::fxdiv::fxdiv)
+ IF(NOT TARGET fxdiv)
+ SET(FXDIV_BUILD_TESTS OFF CACHE BOOL "")
+ SET(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "")
+@@ -325,6 +323,8 @@ ENDIF()
+ TARGET_LINK_LIBRARIES(qnnpack PRIVATE fxdiv)
+
+ # ---[ Configure psimd
++find_package(unofficial-psimd CONFIG REQUIRED)
++add_library(psimd ALIAS unofficial::psimd::psimd)
+ IF(NOT TARGET psimd)
+ ADD_SUBDIRECTORY(
+ "${PSIMD_SOURCE_DIR}"
+@@ -333,6 +333,8 @@ ENDIF()
+ TARGET_LINK_LIBRARIES(qnnpack PRIVATE psimd)
+
+ # ---[ Configure FP16
++find_package(unofficial-fp16 CONFIG REQUIRED)
++add_library(fp16 ALIAS unofficial::fp16::fp16)
+ IF(NOT TARGET fp16)
+ SET(FP16_BUILD_TESTS OFF CACHE BOOL "")
+ SET(FP16_BUILD_BENCHMARKS OFF CACHE BOOL "")
+@@ -343,6 +345,7 @@ ENDIF()
+ TARGET_LINK_LIBRARIES(qnnpack PRIVATE fp16)
+
+ INSTALL(TARGETS qnnpack
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
diff --git a/vcpkg/ports/qnnpack/vcpkg.json b/vcpkg/ports/qnnpack/vcpkg.json
new file mode 100644
index 0000000..95b027e
--- /dev/null
+++ b/vcpkg/ports/qnnpack/vcpkg.json
@@ -0,0 +1,25 @@
+{
+ "name": "qnnpack",
+ "version-date": "2021-02-26",
+ "port-version": 5,
+ "description": "Quantized Neural Network PACKage - mobile-optimized implementation of quantized neural network operators",
+ "homepage": "https://github.com/pytorch/QNNPACK",
+ "license": "BSD-3-Clause",
+ "supports": "!windows",
+ "dependencies": [
+ {
+ "name": "cpuinfo",
+ "features": [
+ "clog"
+ ]
+ },
+ "fp16",
+ "fxdiv",
+ "psimd",
+ "pthreadpool",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ }
+ ]
+}