projects/guix·blob python-team · refs

205 lines · 9.5 KiB

1This patch allows us to use our copy of the dependencies instead
2of downloading them and rebuilding them. It also builds a shared
3library.
4
5diff --git a/CMakeLists.txt b/CMakeLists.txt
6index 5ecd2df..aaa67d1 100644
7--- a/CMakeLists.txt
8+++ b/CMakeLists.txt
9@@ -12,7 +12,7 @@ SET_PROPERTY(CACHE NNPACK_BACKEND PROPERTY STRINGS auto psimd scalar)
10 OPTION(NNPACK_CONVOLUTION_ONLY "Build only NNPACK functions for convolutional layer" OFF)
11 OPTION(NNPACK_INFERENCE_ONLY "Build only NNPACK functions for inference" OFF)
12 OPTION(NNPACK_CUSTOM_THREADPOOL "Build NNPACK for custom thread pool" OFF)
13-SET(NNPACK_LIBRARY_TYPE "default" CACHE STRING "Type of library (shared, static, or default) to build")
14+SET(NNPACK_LIBRARY_TYPE "shared" CACHE STRING "Type of library (shared, static, or default) to build")
15 SET_PROPERTY(CACHE NNPACK_LIBRARY_TYPE PROPERTY STRINGS default static shared)
16 OPTION(NNPACK_BUILD_TESTS "Build NNPACK unit tests" ON)
17
18@@ -123,7 +123,7 @@ SET(CONFU_DEPENDENCIES_BINARY_DIR ${CMAKE_BINARY_DIR}/deps
19 CACHE PATH "Confu-style dependencies binary directory")
20
21 IF(NNPACK_BACKEND STREQUAL "x86-64")
22- IF(NOT DEFINED PYTHON_SIX_SOURCE_DIR)
23+ IF(FALSE)
24 MESSAGE(STATUS "Downloading six (Python package) to ${CONFU_DEPENDENCIES_SOURCE_DIR}/six (define PYTHON_SIX_SOURCE_DIR to avoid it)")
25 CONFIGURE_FILE(cmake/DownloadSix.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/six-download/CMakeLists.txt")
26 EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
27@@ -133,7 +133,7 @@ IF(NNPACK_BACKEND STREQUAL "x86-64")
28 SET(PYTHON_SIX_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/six" CACHE STRING "six (Python package) source directory")
29 ENDIF()
30
31- IF(NOT DEFINED PYTHON_ENUM_SOURCE_DIR)
32+ IF(FALSE)
33 IF(${PYTHON_VERSION_STRING} VERSION_LESS 3.4)
34 # ---[ Python < 3.4 does not natively support enums, and needs a polyfill
35 MESSAGE(STATUS "Downloading enum (Python package) to ${CONFU_DEPENDENCIES_SOURCE_DIR}/enum (define PYTHON_ENUM_SOURCE_DIR to avoid it)")
36@@ -148,7 +148,7 @@ IF(NNPACK_BACKEND STREQUAL "x86-64")
37 ENDIF()
38 ENDIF()
39
40- IF(NOT DEFINED PYTHON_PEACHPY_SOURCE_DIR)
41+ IF(FALSE)
42 # ---[ PeachPy requires Opcodes for installation
43 IF(NOT DEFINED PYTHON_OPCODES_SOURCE_DIR)
44 MESSAGE(STATUS "Downloading opcodes (Python package) to ${CONFU_DEPENDENCIES_SOURCE_DIR}/opcodes (define PYTHON_OPCODES_SOURCE_DIR to avoid it)")
45@@ -169,15 +169,9 @@ IF(NNPACK_BACKEND STREQUAL "x86-64")
46 SET(PYTHON_PEACHPY_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/peachpy" CACHE STRING "PeachPy (Python package) source directory")
47 ENDIF()
48
49- IF(${PYTHON_VERSION_STRING} VERSION_LESS 3.4)
50- # ---[ Python < 3.4 does not natively support enums, and needs a polyfill
51- SET(PEACHPY_PYTHONPATH "${PYTHON_SIX_SOURCE_DIR}:${PYTHON_ENUM_SOURCE_DIR}:${PYTHON_PEACHPY_SOURCE_DIR}")
52- ELSE()
53- SET(PEACHPY_PYTHONPATH "${PYTHON_SIX_SOURCE_DIR}:${PYTHON_PEACHPY_SOURCE_DIR}")
54- ENDIF()
55 ENDIF()
56
57-IF(NOT DEFINED CPUINFO_SOURCE_DIR)
58+IF(FALSE)
59 MESSAGE(STATUS "Downloading cpuinfo to ${CONFU_DEPENDENCIES_SOURCE_DIR}/cpuinfo (define CPUINFO_SOURCE_DIR to avoid it)")
60 CONFIGURE_FILE(cmake/DownloadCpuinfo.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/cpuinfo-download/CMakeLists.txt")
61 EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
62@@ -187,7 +181,7 @@ IF(NOT DEFINED CPUINFO_SOURCE_DIR)
63 SET(CPUINFO_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/cpuinfo" CACHE STRING "cpuinfo source directory")
64 ENDIF()
65
66-IF(NOT DEFINED FP16_SOURCE_DIR)
67+IF(FALSE)
68 MESSAGE(STATUS "Downloading FP16 to ${CONFU_DEPENDENCIES_SOURCE_DIR}/fp16 (define FP16_SOURCE_DIR to avoid it)")
69 CONFIGURE_FILE(cmake/DownloadFP16.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/fp16-download/CMakeLists.txt")
70 EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
71@@ -197,7 +191,7 @@ IF(NOT DEFINED FP16_SOURCE_DIR)
72 SET(FP16_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/fp16" CACHE STRING "FP16 source directory")
73 ENDIF()
74
75-IF(NOT DEFINED FXDIV_SOURCE_DIR)
76+IF(FALSE)
77 MESSAGE(STATUS "Downloading FXdiv to ${CONFU_DEPENDENCIES_SOURCE_DIR}/fxdiv (define FXDIV_SOURCE_DIR to avoid it)")
78 CONFIGURE_FILE(cmake/DownloadFXdiv.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/fxdiv-download/CMakeLists.txt")
79 EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
80@@ -207,7 +201,7 @@ IF(NOT DEFINED FXDIV_SOURCE_DIR)
81 SET(FXDIV_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/fxdiv" CACHE STRING "FXdiv source directory")
82 ENDIF()
83
84-IF(NOT DEFINED PSIMD_SOURCE_DIR)
85+IF(FALSE)
86 MESSAGE(STATUS "Downloading PSimd to ${CONFU_DEPENDENCIES_SOURCE_DIR}/psimd (define PSIMD_SOURCE_DIR to avoid it)")
87 CONFIGURE_FILE(cmake/DownloadPSimd.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/psimd-download/CMakeLists.txt")
88 EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
89@@ -217,7 +211,7 @@ IF(NOT DEFINED PSIMD_SOURCE_DIR)
90 SET(PSIMD_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/psimd" CACHE STRING "PSimd source directory")
91 ENDIF()
92
93-IF(NOT DEFINED PTHREADPOOL_SOURCE_DIR)
94+IF(FALSE)
95 MESSAGE(STATUS "Downloading pthreadpool to ${CONFU_DEPENDENCIES_SOURCE_DIR}/pthreadpool (define PTHREADPOOL_SOURCE_DIR to avoid it)")
96 CONFIGURE_FILE(cmake/DownloadPThreadPool.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/pthreadpool-download/CMakeLists.txt")
97 EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
98@@ -227,7 +221,7 @@ IF(NOT DEFINED PTHREADPOOL_SOURCE_DIR)
99 SET(PTHREADPOOL_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/pthreadpool" CACHE STRING "pthreadpool source directory")
100 ENDIF()
101
102-IF(NNPACK_BUILD_TESTS AND NOT DEFINED GOOGLETEST_SOURCE_DIR)
103+IF(FALSE)
104 MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)")
105 CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt")
106 EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
107@@ -237,6 +231,7 @@ IF(NNPACK_BUILD_TESTS AND NOT DEFINED GOOGLETEST_SOURCE_DIR)
108 SET(GOOGLETEST_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest" CACHE STRING "Google Test source directory")
109 ENDIF()
110
111+
112 # ---[ NNPACK library
113 SET(NNPACK_INIT_SRCS src/init.c)
114 SET(NNPACK_LAYER_SRCS src/convolution-inference.c)
115@@ -427,8 +422,7 @@ IF(NNPACK_BACKEND STREQUAL "x86-64")
116 FILE(MAKE_DIRECTORY ${obj_dir})
117 ADD_CUSTOM_COMMAND(
118 OUTPUT ${obj}
119- COMMAND "PYTHONPATH=${PEACHPY_PYTHONPATH}"
120- ${PYTHON_EXECUTABLE} -m peachpy.x86_64
121+ COMMAND ${PYTHON_EXECUTABLE} -m peachpy.x86_64
122 -mabi=sysv -g4 -mimage-format=${PEACHPY_IMAGE_FORMAT}
123 "-I${PROJECT_SOURCE_DIR}/src" "-I${PROJECT_SOURCE_DIR}/src/x86_64-fma" "-I${FP16_SOURCE_DIR}/include"
124 -o ${obj} "${PROJECT_SOURCE_DIR}/${src}"
125@@ -495,63 +489,10 @@ ADD_LIBRARY(nnpack_reference_layers STATIC ${NNPACK_REFERENCE_LAYERS_SRCS})
126 NNPACK_TARGET_ENABLE_C99(nnpack_reference_layers)
127 TARGET_INCLUDE_DIRECTORIES(nnpack_reference_layers PUBLIC include)
128
129-# ---[ Configure cpuinfo
130-IF(NOT TARGET cpuinfo)
131- SET(CPUINFO_BUILD_TOOLS OFF CACHE BOOL "")
132- SET(CPUINFO_BUILD_UNIT_TESTS OFF CACHE BOOL "")
133- SET(CPUINFO_BUILD_MOCK_TESTS OFF CACHE BOOL "")
134- SET(CPUINFO_BUILD_BENCHMARKS OFF CACHE BOOL "")
135- ADD_SUBDIRECTORY(
136- "${CPUINFO_SOURCE_DIR}"
137- "${CONFU_DEPENDENCIES_BINARY_DIR}/cpuinfo")
138-ENDIF()
139-TARGET_LINK_LIBRARIES(nnpack PRIVATE cpuinfo)
140-
141-# ---[ Configure pthreadpool
142-IF(NOT TARGET pthreadpool)
143- SET(PTHREADPOOL_BUILD_TESTS OFF CACHE BOOL "")
144- SET(PTHREADPOOL_BUILD_BENCHMARKS OFF CACHE BOOL "")
145- ADD_SUBDIRECTORY(
146- "${PTHREADPOOL_SOURCE_DIR}"
147- "${CONFU_DEPENDENCIES_BINARY_DIR}/pthreadpool")
148-ENDIF()
149-IF(NNPACK_CUSTOM_THREADPOOL)
150- # Depend on pthreadpool interface, but not on implementation.
151- # This is used when NNPACK user (e.g. Caffe2) provides its own threadpool implementation.
152- TARGET_LINK_LIBRARIES(nnpack PUBLIC pthreadpool_interface)
153-ELSE()
154- TARGET_LINK_LIBRARIES(nnpack PUBLIC pthreadpool)
155-ENDIF()
156-TARGET_LINK_LIBRARIES(nnpack_reference_layers PUBLIC pthreadpool)
157+TARGET_LINK_LIBRARIES(nnpack PUBLIC cpuinfo)
158
159-# ---[ Configure FXdiv
160-IF(NOT TARGET fxdiv)
161- SET(FXDIV_BUILD_TESTS OFF CACHE BOOL "")
162- SET(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "")
163- ADD_SUBDIRECTORY(
164- "${FXDIV_SOURCE_DIR}"
165- "${CONFU_DEPENDENCIES_BINARY_DIR}/fxdiv")
166-ENDIF()
167-TARGET_LINK_LIBRARIES(nnpack PRIVATE fxdiv)
168-
169-# ---[ Configure psimd
170-IF(NOT TARGET psimd)
171- ADD_SUBDIRECTORY(
172- "${PSIMD_SOURCE_DIR}"
173- "${CONFU_DEPENDENCIES_BINARY_DIR}/psimd")
174-ENDIF()
175-TARGET_LINK_LIBRARIES(nnpack PRIVATE psimd)
176-
177-# ---[ Configure FP16
178-IF(NOT TARGET fp16)
179- SET(FP16_BUILD_TESTS OFF CACHE BOOL "")
180- SET(FP16_BUILD_BENCHMARKS OFF CACHE BOOL "")
181- ADD_SUBDIRECTORY(
182- "${FP16_SOURCE_DIR}"
183- "${CONFU_DEPENDENCIES_BINARY_DIR}/fp16")
184-ENDIF()
185-TARGET_LINK_LIBRARIES(nnpack PRIVATE fp16)
186-TARGET_LINK_LIBRARIES(nnpack_reference_layers PUBLIC fp16)
187+TARGET_LINK_LIBRARIES(nnpack PUBLIC pthreadpool)
188+TARGET_LINK_LIBRARIES(nnpack_reference_layers PUBLIC pthreadpool)
189
190 INSTALL(TARGETS nnpack
191 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
192@@ -560,13 +501,6 @@ INSTALL(TARGETS nnpack
193
194 IF(NNPACK_BUILD_TESTS)
195 # ---[ Build google test
196- IF(NOT TARGET gtest)
197- SET(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
198- ADD_SUBDIRECTORY(
199- "${GOOGLETEST_SOURCE_DIR}"
200- "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest")
201- ENDIF()
202-
203 ADD_EXECUTABLE(convolution-inference-smoketest test/convolution-inference/smoke.cc)
204 NNPACK_TARGET_ENABLE_CXX11(convolution-inference-smoketest)
205 TARGET_INCLUDE_DIRECTORIES(convolution-inference-smoketest PRIVATE test)