vcpkg/ports/fbgemm/fix-cmakelists.patch

191 lines
7.6 KiB
Diff

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" )