diff --git a/CMakeLists.txt b/CMakeLists.txt index 0243f68..ccf7331 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,7 +177,7 @@ 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) @@ -199,7 +198,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,7 +245,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 "==========") -if(NOT TARGET asmjit) +find_package(asmjit CONFIG REQUIRED) # target 'asmjit::asmjit' +if(FALSE) # Download asmjit from github if ASMJIT_SRC_DIR is not specified. if(NOT DEFINED ASMJIT_SRC_DIR) set(ASMJIT_SRC_DIR "${FBGEMM_SOURCE_DIR}/external/asmjit" @@ -280,7 +279,8 @@ if(NOT TARGET asmjit) endif() endif() -if(NOT TARGET cpuinfo) +find_package(cpuinfo CONFIG REQUIRED) # target 'cpuinfo::cpuinfo' +if(FALSE) #Download cpuinfo from github if CPUINFO_SOURCE_DIR is not specified. if(NOT DEFINED CPUINFO_SOURCE_DIR) set(CPUINFO_SOURCE_DIR "${FBGEMM_SOURCE_DIR}/external/cpuinfo" @@ -301,26 +301,26 @@ endif() target_include_directories(fbgemm_generic BEFORE PUBLIC $ PUBLIC $ - 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 $ PUBLIC $ - 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 $ PUBLIC $ - 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 $ PUBLIC $ - 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 +338,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 $ @@ -364,15 +365,10 @@ target_include_directories(fbgemm BEFORE PUBLIC $ PUBLIC $) -target_link_libraries(fbgemm - $ - $) -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( @@ -391,7 +387,7 @@ install( DESTINATION share/cmake/fbgemm FILE fbgemmLibraryConfig.cmake) -if(MSVC) +if(FALSE) if(FBGEMM_LIBRARY_TYPE STREQUAL "shared") install( FILES $ $