File: CMakeLists.txt

package info (click to toggle)
pytorch 1.13.1%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 139,252 kB
  • sloc: cpp: 1,100,274; python: 706,454; ansic: 83,052; asm: 7,618; java: 3,273; sh: 2,841; javascript: 612; makefile: 323; xml: 269; ruby: 185; yacc: 144; objc: 68; lex: 44
file content (124 lines) | stat: -rw-r--r-- 4,036 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
project(c10 CXX)

set(CMAKE_CXX_STANDARD 14 CACHE STRING "The C++ standard whose features are requested to build this target.")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

# Main build file for the C10 library.
#
# Note that the C10 library should maintain minimal dependencies - especially,
# it should not depend on any library that is implementation specific or
# backend specific. It should in particular NOT be dependent on any generated
# protobuf header files, because protobuf header files will transitively force
# one to link against a specific protobuf version.

# ---[ Configure macro file.
set(C10_USE_GFLAGS ${USE_GFLAGS}) # used in cmake_macros.h.in
set(C10_USE_GLOG ${USE_GLOG}) # used in cmake_macros.h.in
set(C10_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS}) # used in cmake_macros.h.in
set(C10_USE_NUMA ${USE_NUMA})
set(C10_USE_MSVC_STATIC_RUNTIME ${CAFFE2_USE_MSVC_STATIC_RUNTIME})
configure_file(
    ${CMAKE_CURRENT_LIST_DIR}/macros/cmake_macros.h.in
    ${CMAKE_BINARY_DIR}/c10/macros/cmake_macros.h)

# Note: if you want to add ANY dependency to the c10 library, make sure you
# check with the core PyTorch developers as the dependency will be
# transitively passed on to all libraries dependent on PyTorch.
file(GLOB C10_SRCS
        *.cpp
        core/*.cpp
        core/impl/*.cpp
        mobile/*.cpp
        macros/*.cpp
        util/*.cpp
        )
file(GLOB C10_HEADERS
        *.h
        core/*.h
        core/impl/*.h
        mobile/*.h
        macros/*.h
        util/*.h
        )
add_library(c10 ${C10_SRCS} ${C10_HEADERS})
if(HAVE_SOVERSION)
  set_target_properties(c10 PROPERTIES
      VERSION ${TORCH_VERSION} SOVERSION ${TORCH_SOVERSION})
endif()
# If building shared library, set dllimport/dllexport proper.
target_compile_options(c10 PRIVATE "-DC10_BUILD_MAIN_LIB")
# Enable hidden visibility if compiler supports it.
if(${COMPILER_SUPPORTS_HIDDEN_VISIBILITY})
  target_compile_options(c10 PRIVATE "-fvisibility=hidden")
endif()
if(HAS_WERROR_SIGN_COMPARE AND WERROR)
  target_compile_options(c10 PRIVATE "-Werror=sign-compare")
endif()

# ---[ Dependency of c10
if(${USE_GFLAGS})
   target_link_libraries(c10 PUBLIC gflags)
endif()

if(${USE_GLOG})
    target_link_libraries(c10 PUBLIC glog::glog)
endif()
target_link_libraries(c10 PRIVATE fmt::fmt-header-only)

find_package(Backtrace)
if(Backtrace_FOUND)
  target_include_directories(c10 PRIVATE ${Backtrace_INCLUDE_DIRS})
  target_link_libraries(c10 PRIVATE ${Backtrace_LIBRARIES})
  target_compile_definitions(c10 PRIVATE SUPPORTS_BACKTRACE=1)
else()
  target_compile_definitions(c10 PRIVATE SUPPORTS_BACKTRACE=0)
endif()

if(USE_NUMA)
  message(STATUS "NUMA paths:")
  message(STATUS ${Numa_INCLUDE_DIR})
  message(STATUS ${Numa_LIBRARIES})
  include_directories(SYSTEM ${Numa_INCLUDE_DIR})
  target_link_libraries(c10 PRIVATE ${Numa_LIBRARIES})
else()
  message(STATUS "don't use NUMA")
endif()

if(ANDROID)
    target_link_libraries(c10 PRIVATE log)
endif()

target_include_directories(
    c10 PUBLIC
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../>
    $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
    $<INSTALL_INTERFACE:include>)

add_subdirectory(test)
add_subdirectory(benchmark)

if(USE_CUDA)
  add_subdirectory(cuda)
endif()

if(USE_ROCM)
  # NB: This directory is generated by the HIPIFY script; it's
  # not checked in
  add_subdirectory(hip)
endif()

# ---[ Installation
# Note: for now, we will put all export path into one single Caffe2Targets group
# to deal with the cmake deployment need. Inside the Caffe2Targets set, the
# individual libraries like libc10.so and libcaffe2.so are still self-contained.
install(TARGETS c10 EXPORT Caffe2Targets DESTINATION lib)
install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
        DESTINATION include
        FILES_MATCHING PATTERN "*.h")
install(FILES ${CMAKE_BINARY_DIR}/c10/macros/cmake_macros.h
        DESTINATION include/c10/macros)

if(MSVC AND C10_BUILD_SHARED_LIBS)
  install(FILES $<TARGET_PDB_FILE:c10> DESTINATION lib OPTIONAL)
endif()