diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/fbgemm | |
Diffstat (limited to 'vcpkg/ports/fbgemm')
| -rw-r--r-- | vcpkg/ports/fbgemm/fix-cmakelists.patch | 190 | ||||
| -rw-r--r-- | vcpkg/ports/fbgemm/portfile.cmake | 29 | ||||
| -rw-r--r-- | vcpkg/ports/fbgemm/vcpkg.json | 21 |
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 + } + ] +} |