aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/fbgemm
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/fbgemm')
-rw-r--r--vcpkg/ports/fbgemm/fix-cmakelists.patch190
-rw-r--r--vcpkg/ports/fbgemm/portfile.cmake29
-rw-r--r--vcpkg/ports/fbgemm/vcpkg.json21
3 files changed, 240 insertions, 0 deletions
diff --git a/vcpkg/ports/fbgemm/fix-cmakelists.patch b/vcpkg/ports/fbgemm/fix-cmakelists.patch
new file mode 100644
index 0000000..6ca3e54
--- /dev/null
+++ b/vcpkg/ports/fbgemm/fix-cmakelists.patch
@@ -0,0 +1,190 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0243f68..bbe98e9 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -94,13 +94,12 @@ project(fbgemm VERSION 0.1 LANGUAGES CXX C)
+ include(GNUInstallDirs)
+
+ # Load Python
+-find_package(PythonInterp)
+-
+-set(FBGEMM_LIBRARY_TYPE "default"
+- CACHE STRING
+- "Type of library (shared, static, or default) to build")
++if(BUILD_SHARED_LIBS)
++set(FBGEMM_LIBRARY_TYPE "shared")
++else()
++set(FBGEMM_LIBRARY_TYPE "static")
++endif()
+
+-set_property(CACHE FBGEMM_LIBRARY_TYPE PROPERTY STRINGS default static shared)
+ option(FBGEMM_BUILD_TESTS "Build fbgemm unit tests" ON)
+ option(FBGEMM_BUILD_BENCHMARKS "Build fbgemm benchmarks" ON)
+ option(FBGEMM_BUILD_DOCS "Build fbgemm documentation" OFF)
+@@ -178,11 +177,12 @@ add_dependencies(fbgemm_autovec defs.bzl)
+ # 2) MSVC uses /MD in default cxx compiling flags,
+ # Need to change it to /MT in static case
+ if(MSVC)
+- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4244 /wd4267 /wd4305 /wd4309")
++ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4244 /wd4267 /wd4305 /wd4309 /wd4703 /bigobj")
+ if(FBGEMM_LIBRARY_TYPE STREQUAL "static")
+ target_compile_definitions(fbgemm_generic PRIVATE ASMJIT_STATIC)
+ target_compile_definitions(fbgemm_avx2 PRIVATE ASMJIT_STATIC)
+ target_compile_definitions(fbgemm_avx512 PRIVATE ASMJIT_STATIC)
++if(FALSE)
+ foreach(flag_var
+ CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
+ CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
+@@ -190,6 +190,7 @@ if(MSVC)
+ string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
+ endif(${flag_var} MATCHES "/MD")
+ endforeach(flag_var)
++endif()
+ endif()
+ target_compile_options(fbgemm_avx2 PRIVATE "/arch:AVX2")
+ target_compile_options(fbgemm_avx512 PRIVATE "/arch:AVX512")
+@@ -199,7 +200,6 @@ if(MSVC)
+ else(MSVC)
+ string(APPEND CMAKE_CXX_FLAGS " -Wall")
+ string(APPEND CMAKE_CXX_FLAGS " -Wextra")
+- string(APPEND CMAKE_CXX_FLAGS " -Werror")
+ string(APPEND CMAKE_CXX_FLAGS " -Wno-deprecated-declarations")
+ string(APPEND CMAKE_CXX_FLAGS " -Wunknown-pragmas")
+ string(APPEND CMAKE_CXX_FLAGS " -Wimplicit-fallthrough")
+@@ -247,6 +247,8 @@ message(WARNING "CMAKE_CXX_FLAGS_DEBUG is ${CMAKE_CXX_FLAGS_DEBUG}")
+ message(WARNING "CMAKE_CXX_FLAGS_RELEASE is ${CMAKE_CXX_FLAGS_RELEASE}")
+ message(WARNING "==========")
+
++find_package(asmjit CONFIG REQUIRED) # target 'asmjit::asmjit'
++add_library(asmjit ALIAS asmjit::asmjit)
+ if(NOT TARGET asmjit)
+ # Download asmjit from github if ASMJIT_SRC_DIR is not specified.
+ if(NOT DEFINED ASMJIT_SRC_DIR)
+@@ -280,6 +282,8 @@ if(NOT TARGET asmjit)
+ endif()
+ endif()
+
++find_package(cpuinfo CONFIG REQUIRED) # target 'cpuinfo::cpuinfo'
++add_library(cpuinfo ALIAS cpuinfo::cpuinfo)
+ if(NOT TARGET cpuinfo)
+ #Download cpuinfo from github if CPUINFO_SOURCE_DIR is not specified.
+ if(NOT DEFINED CPUINFO_SOURCE_DIR)
+@@ -301,26 +305,26 @@ endif()
+ target_include_directories(fbgemm_generic BEFORE
+ PUBLIC $<BUILD_INTERFACE:${FBGEMM_SOURCE_DIR}>
+ PUBLIC $<BUILD_INTERFACE:${FBGEMM_SOURCE_DIR}/include>
+- PRIVATE "${ASMJIT_SRC_DIR}/src"
+- PRIVATE "${CPUINFO_SOURCE_DIR}/include")
++)
++target_link_libraries(fbgemm_generic PUBLIC asmjit::asmjit cpuinfo::cpuinfo)
+
+ target_include_directories(fbgemm_avx2 BEFORE
+ PUBLIC $<BUILD_INTERFACE:${FBGEMM_SOURCE_DIR}>
+ PUBLIC $<BUILD_INTERFACE:${FBGEMM_SOURCE_DIR}/include>
+- PRIVATE "${ASMJIT_SRC_DIR}/src"
+- PRIVATE "${CPUINFO_SOURCE_DIR}/include")
++)
++target_link_libraries(fbgemm_avx2 PUBLIC asmjit::asmjit cpuinfo::cpuinfo)
+
+ target_include_directories(fbgemm_avx512 BEFORE
+ PUBLIC $<BUILD_INTERFACE:${FBGEMM_SOURCE_DIR}>
+ PUBLIC $<BUILD_INTERFACE:${FBGEMM_SOURCE_DIR}/include>
+- PRIVATE "${ASMJIT_SRC_DIR}/src"
+- PRIVATE "${CPUINFO_SOURCE_DIR}/include")
++)
++target_link_libraries(fbgemm_avx512 PUBLIC asmjit::asmjit cpuinfo::cpuinfo)
+
+ target_include_directories(fbgemm_autovec BEFORE
+ PUBLIC $<BUILD_INTERFACE:${FBGEMM_SOURCE_DIR}>
+ PUBLIC $<BUILD_INTERFACE:${FBGEMM_SOURCE_DIR}/include>
+- PRIVATE "${ASMJIT_SRC_DIR}/src"
+- PRIVATE "${CPUINFO_SOURCE_DIR}/include")
++)
++target_link_libraries(fbgemm_autovec PUBLIC asmjit::asmjit cpuinfo::cpuinfo)
+
+ if(FBGEMM_LIBRARY_TYPE STREQUAL "default")
+ add_library(fbgemm
+@@ -338,6 +342,7 @@ elseif(FBGEMM_LIBRARY_TYPE STREQUAL "shared")
+ set_property(TARGET fbgemm_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON)
+ set_property(TARGET fbgemm_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON)
+ set_property(TARGET fbgemm_autovec PROPERTY POSITION_INDEPENDENT_CODE ON)
++ set_target_properties(fbgemm PROPERTIES CXX_VISIBILITY_PRESET hidden)
+ elseif(FBGEMM_LIBRARY_TYPE STREQUAL "static")
+ add_library(fbgemm STATIC
+ $<TARGET_OBJECTS:fbgemm_generic>
+@@ -346,11 +351,11 @@ elseif(FBGEMM_LIBRARY_TYPE STREQUAL "static")
+ $<TARGET_OBJECTS:fbgemm_autovec>)
+ #MSVC need to define FBGEMM_STATIC for fbgemm_generic also to
+ #avoid generating _dllimport functions.
+- target_compile_definitions(fbgemm_generic PRIVATE FBGEMM_STATIC)
+- target_compile_definitions(fbgemm_avx2 PRIVATE FBGEMM_STATIC)
+- target_compile_definitions(fbgemm_avx512 PRIVATE FBGEMM_STATIC)
+- target_compile_definitions(fbgemm_autovec PRIVATE FBGEMM_STATIC)
+- target_compile_definitions(fbgemm PRIVATE FBGEMM_STATIC)
++ target_compile_definitions(fbgemm_generic PUBLIC FBGEMM_STATIC)
++ target_compile_definitions(fbgemm_avx2 PUBLIC FBGEMM_STATIC)
++ target_compile_definitions(fbgemm_avx512 PUBLIC FBGEMM_STATIC)
++ target_compile_definitions(fbgemm_autovec PUBLIC FBGEMM_STATIC)
++ target_compile_definitions(fbgemm PUBLIC FBGEMM_STATIC)
+ else()
+ message(FATAL_ERROR "Unsupported library type ${FBGEMM_LIBRARY_TYPE}")
+ endif()
+@@ -364,20 +369,15 @@ target_include_directories(fbgemm BEFORE
+ PUBLIC $<BUILD_INTERFACE:${FBGEMM_SOURCE_DIR}>
+ PUBLIC $<BUILD_INTERFACE:${FBGEMM_SOURCE_DIR}/include>)
+
+-target_link_libraries(fbgemm
+- $<BUILD_INTERFACE:asmjit>
+- $<BUILD_INTERFACE:cpuinfo>)
+-add_dependencies(fbgemm
+- asmjit
+- cpuinfo)
++target_link_libraries(fbgemm PUBLIC asmjit::asmjit cpuinfo::cpuinfo)
+
+ if(OpenMP_FOUND)
+- target_link_libraries(fbgemm OpenMP::OpenMP_CXX)
++ target_link_libraries(fbgemm PUBLIC OpenMP::OpenMP_CXX)
+ endif()
+
+ install(
+ TARGETS fbgemm
+- EXPORT fbgemmLibraryConfig
++ EXPORT unofficial-fbgemm-config-targets
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) #For windows
+@@ -387,11 +387,16 @@ install(
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/fbgemm")
+
+ install(
+- EXPORT fbgemmLibraryConfig
+- DESTINATION share/cmake/fbgemm
+- FILE fbgemmLibraryConfig.cmake)
++ EXPORT unofficial-fbgemm-config-targets
++ FILE unofficial-fbgemm-config-targets.cmake
++ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/fbgemmLibrary)
+
+-if(MSVC)
++include(CMakePackageConfigHelpers)
++configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/fbgemmLibraryConfig.cmake" INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/fbgemmLibrary)
++install(FILES ${CMAKE_CURRENT_BINARY_DIR}/fbgemmLibraryConfig.cmake DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/fbgemmLibrary)
++
++
++if(FALSE)
+ if(FBGEMM_LIBRARY_TYPE STREQUAL "shared")
+ install(
+ FILES $<TARGET_PDB_FILE:fbgemm> $<TARGET_PDB_FILE:asmjit>
+diff --git a/Config.cmake.in b/Config.cmake.in
+new file mode 100644
+index 0000000..e2e187d
+--- /dev/null
++++ b/Config.cmake.in
+@@ -0,0 +1,8 @@
++@PACKAGE_INIT@
++
++include(CMakeFindDependencyMacro)
++find_dependency(asmjit)
++find_dependency(cpuinfo)
++
++
++include ( "${CMAKE_CURRENT_LIST_DIR}/unofficial-fbgemm-config-targets.cmake" )
diff --git a/vcpkg/ports/fbgemm/portfile.cmake b/vcpkg/ports/fbgemm/portfile.cmake
new file mode 100644
index 0000000..3600251
--- /dev/null
+++ b/vcpkg/ports/fbgemm/portfile.cmake
@@ -0,0 +1,29 @@
+# The project's CMakeLists.txt uses Python to select source files. Check if it is available in advance.
+vcpkg_find_acquire_program(PYTHON3)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO pytorch/fbgemm
+ REF 73a64e75ff31be7ece6f68929ee5682b0bf9eb10
+ SHA512 2757d986a977d14bd32d482452627b55aae216f77a262b2b1b88a643a2977c6c27c5a99ee91b7a7bdbb66248239ecc1a57d1953251049d787317b6355369af26
+ PATCHES
+ fix-cmakelists.patch
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DUSE_SANITIZER=OFF
+ -DFBGEMM_BUILD_TESTS=OFF
+ -DFBGEMM_BUILD_BENCHMARKS=OFF
+ -DPYTHON_EXECUTABLE=${PYTHON3} # inject the path instead of find_package(Python)
+)
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_cmake_config_fixup(PACKAGE_NAME fbgemmLibrary)
+
+# this internal header is required by pytorch
+file(INSTALL "${SOURCE_PATH}/src/RefImplementations.h"
+ DESTINATION "${CURRENT_PACKAGES_DIR}/include/fbgemm/src")
+file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME "copyright")
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
diff --git a/vcpkg/ports/fbgemm/vcpkg.json b/vcpkg/ports/fbgemm/vcpkg.json
new file mode 100644
index 0000000..2df593a
--- /dev/null
+++ b/vcpkg/ports/fbgemm/vcpkg.json
@@ -0,0 +1,21 @@
+{
+ "name": "fbgemm",
+ "version": "1.0.0",
+ "port-version": 1,
+ "description": "FB (Facebook) + GEMM (General Matrix-Matrix Multiplication)",
+ "homepage": "https://code.fb.com/ml-applications/fbgemm/",
+ "license": "BSD-3-Clause",
+ "supports": "!arm & !x86 & !uwp",
+ "dependencies": [
+ "asmjit",
+ "cpuinfo",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ]
+}