mirror of https://github.com/microsoft/vcpkg.git
191 lines
7.6 KiB
Diff
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" )
|