• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# hwloc: Portable Hardware Locality Library
2
3package(
4    default_visibility = ["//visibility:public"],
5)
6
7licenses(["notice"])
8
9exports_files(["COPYING"])
10
11load("@local_config_cuda//cuda:build_defs.bzl", "if_cuda")
12load("@org_tensorflow//third_party:common.bzl", "template_rule")
13
14COMMON_INCLUDE_COPTS = [
15    "-I.",
16    "-Ihwloc",
17    "-Iinclude",
18]
19
20DISABLE_WARNINGS_COPTS = [
21    "-Wno-vla",
22]
23
24VAR_SETTINGS_COPTS = [
25    "-DHWLOC_DUMPED_HWDATA_DIR=",
26    "-DRUNSTATEDIR=",
27]
28
29_INCLUDE_HWLOC_AUTOIGEN_CONFIG_H_COMMON_SUBS = {
30    "#undef HWLOC_VERSION_MAJOR": "#define HWLOC_VERSION_MAJOR 2",
31    "#undef HWLOC_VERSION_MINOR": "#define HWLOC_VERSION_MINOR 0",
32    "#undef HWLOC_VERSION_RELEASE": "#define HWLOC_VERSION_RELEASE 3",
33    "#undef HWLOC_VERSION_GREEK": "#define HWLOC_VERSION_GREEK \"\"",
34    "#undef HWLOC_VERSION": "#define HWLOC_VERSION \"2.0.3\"",
35    "#undef hwloc_pid_t": "#define hwloc_pid_t pid_t",
36    "#undef hwloc_thread_t": "#define hwloc_thread_t pthread_t",
37    "#  undef HWLOC_HAVE_STDINT_H": "#  define HWLOC_HAVE_STDINT_H 1",
38    "#undef HWLOC_SYM_TRANSFORM": "#define HWLOC_SYM_TRANSFORM 0",
39    "#undef HWLOC_SYM_PREFIX_CAPS": "#define HWLOC_SYM_PREFIX_CAPS HWLOC_",
40    "#undef HWLOC_SYM_PREFIX": "#define HWLOC_SYM_PREFIX hwloc_",
41}
42
43_INCLUDE_HWLOC_AUTOIGEN_CONFIG_H_LINUX_SUBS = dict(_INCLUDE_HWLOC_AUTOIGEN_CONFIG_H_COMMON_SUBS)
44
45_INCLUDE_HWLOC_AUTOIGEN_CONFIG_H_LINUX_SUBS.update({
46    "#undef HWLOC_LINUX_SYS": "#define HWLOC_LINUX_SYS 1",
47})
48
49template_rule(
50    name = "include_hwloc_autogen_config_h",
51    src = "include/hwloc/autogen/config.h.in",
52    out = "include/hwloc/autogen/config.h",
53    substitutions = select({
54        "@org_tensorflow//tensorflow:linux_x86_64": _INCLUDE_HWLOC_AUTOIGEN_CONFIG_H_LINUX_SUBS,
55        "//conditions:default": _INCLUDE_HWLOC_AUTOIGEN_CONFIG_H_COMMON_SUBS,
56    }),
57)
58
59_INCLUDE_PRIVATE_HWLOC_AUTOIGEN_CONFIG_H_COMMON_SUBS = {
60    "#undef HAVE_CLOCK_GETTIME": "#define HAVE_CLOCK_GETTIME 1",
61    "#undef HAVE_CTYPE_H": "#define HAVE_CTYPE_H 1",
62    "#undef HAVE_DECL_CTL_HW": "#define HAVE_DECL_CTL_HW 0",
63    "#undef HAVE_DECL_FABSF": "#define HAVE_DECL_FABSF 1",
64    "#undef HAVE_DECL_GETEXECNAME": "#define HAVE_DECL_GETEXECNAME 0",
65    "#undef HAVE_DECL_GETMODULEFILENAME": "#define HAVE_DECL_GETMODULEFILENAME 0",
66    "#undef HAVE_DECL_GETPROGNAME": "#define HAVE_DECL_GETPROGNAME 0",
67    "#undef HAVE_DECL_HW_NCPU": "#define HAVE_DECL_HW_NCPU 0",
68    "#undef HAVE_DECL_MODFF": "#define HAVE_DECL_MODFF 1",
69    "#undef HAVE_DECL_PTHREAD_GETAFFINITY_NP": "#define HAVE_DECL_PTHREAD_GETAFFINITY_NP 1",
70    "#undef HAVE_DECL_PTHREAD_SETAFFINITY_NP": "#define HAVE_DECL_PTHREAD_SETAFFINITY_NP 1",
71    "#undef HAVE_DECL_RUNNING_ON_VALGRIND": "#define HAVE_DECL_RUNNING_ON_VALGRIND 0",
72    "#undef HAVE_DECL_SCHED_GETCPU": "#define HAVE_DECL_SCHED_GETCPU 1",
73    "#undef HAVE_DECL_SNPRINTF": "#define HAVE_DECL_SNPRINTF 1",
74    "#undef HAVE_DECL_STRTOULL": "#define HAVE_DECL_STRTOULL 1",
75    "#undef HAVE_DECL__PUTENV": "#define HAVE_DECL__PUTENV 0",
76    "#undef HAVE_DECL__SC_LARGE_PAGESIZE": "#define HAVE_DECL__SC_LARGE_PAGESIZE 0",
77    "#undef HAVE_DECL__SC_NPROCESSORS_CONF": "#define HAVE_DECL__SC_NPROCESSORS_CONF 1",
78    "#undef HAVE_DECL__SC_NPROCESSORS_ONLN": "#define HAVE_DECL__SC_NPROCESSORS_ONLN 1",
79    "#undef HAVE_DECL__SC_NPROC_CONF": "#define HAVE_DECL__SC_NPROC_CONF 0",
80    "#undef HAVE_DECL__SC_NPROC_ONLN": "#define HAVE_DECL__SC_NPROC_ONLN 0",
81    "#undef HAVE_DECL__SC_PAGESIZE": "#define HAVE_DECL__SC_PAGESIZE 1",
82    "#undef HAVE_DECL__SC_PAGE_SIZE": "#define HAVE_DECL__SC_PAGE_SIZE 1",
83    "#undef HAVE_DECL__STRDUP": "#define HAVE_DECL__STRDUP 0",
84    "#undef HAVE_DIRENT_H": "#define HAVE_DIRENT_H 1",
85    "#undef HAVE_DLFCN_H": "#define HAVE_DLFCN_H 1",
86    "#undef HAVE_FFSL": "#define HAVE_FFSL 1",
87    "#undef HAVE_FFS": "#define HAVE_FFS 1",
88    "#undef HAVE_GETPAGESIZE": "#define HAVE_GETPAGESIZE 1",
89    "#undef HAVE_INTTYPES_H": "#define HAVE_INTTYPES_H 1",
90    "#undef HAVE_LANGINFO_H": "#define HAVE_LANGINFO_H 1",
91    "#undef HAVE_LOCALE_H": "#define HAVE_LOCALE_H 1",
92    "#undef HAVE_MALLOC_H": "#define HAVE_MALLOC_H 1",
93    "#undef HAVE_MEMALIGN": "#define HAVE_MEMALIGN 1",
94    "#undef HAVE_MEMORY_H": "#define HAVE_MEMORY_H 1",
95    "#undef HAVE_MKSTEMP": "#define HAVE_MKSTEMP 1",
96    "#undef HAVE_NL_LANGINFO": "#define HAVE_NL_LANGINFO 1",
97    "#undef HAVE_OPENAT": "#define HAVE_OPENAT 1",
98    "#undef HAVE_POSIX_MEMALIGN": "#define HAVE_POSIX_MEMALIGN 1",
99    "#undef HAVE_PTHREAD_T": "#define HAVE_PTHREAD_T 1",
100    "#undef HAVE_PUTWC": "#define HAVE_PUTWC 1",
101    "#undef HAVE_SETLOCALE": "#define HAVE_SETLOCALE 1",
102    "#undef HAVE_SSIZE_T": "#define HAVE_SSIZE_T 1",
103    "#undef HAVE_STDINT_H": "#define HAVE_STDINT_H 1",
104    "#undef HAVE_STDLIB_H": "#define HAVE_STDLIB_H 1",
105    "#undef HAVE_STRCASECMP": "#define HAVE_STRCASECMP 1",
106    "#undef HAVE_STRFTIME": "#define HAVE_STRFTIME 1",
107    "#undef HAVE_STRINGS_H": "#define HAVE_STRINGS_H 1",
108    "#undef HAVE_STRING_H": "#define HAVE_STRING_H 1",
109    "#undef HAVE_STRNCASECMP": "#define HAVE_STRNCASECMP 1",
110    "#undef HAVE_SYS_MMAN_H": "#define HAVE_SYS_MMAN_H 1",
111    "#undef HAVE_SYS_PARAM_H": "#define HAVE_SYS_PARAM_H 1",
112    "#undef HAVE_SYS_STAT_H": "#define HAVE_SYS_STAT_H 1",
113    "#undef HAVE_SYS_SYSCTL_H": "#define HAVE_SYS_SYSCTL_H 1",
114    "#undef HAVE_SYS_TYPES_H": "#define HAVE_SYS_TYPES_H 1",
115    "#undef HAVE_SYS_UTSNAME_H": "#define HAVE_SYS_UTSNAME_H 1",
116    "#undef HAVE_TIME_H": "#define HAVE_TIME_H 1",
117    "#undef HAVE_UNAME": "#define HAVE_UNAME 1",
118    "#undef HAVE_UNISTD_H": "#define HAVE_UNISTD_H 1",
119    "#undef HAVE_USELOCALE": "#define HAVE_USELOCALE 1",
120    "#undef HAVE_WCHAR_T": "#define HAVE_WCHAR_T 1",
121    "#undef HAVE_X11_KEYSYM_H": "#define HAVE_X11_KEYSYM_H 1",
122    "#undef HAVE_X11_XLIB_H": "#define HAVE_X11_XLIB_H 1",
123    "#undef HAVE_X11_XUTIL_H": "#define HAVE_X11_XUTIL_H 1",
124    "#undef HAVE___PROGNAME": "#define HAVE___PROGNAME 1",
125    "#undef HWLOC_C_HAVE_VISIBILITY": "#define HWLOC_C_HAVE_VISIBILITY 1",
126    "#undef HWLOC_HAVE_ATTRIBUTE_ALIGNED": "#define HWLOC_HAVE_ATTRIBUTE_ALIGNED 1",
127    "#undef HWLOC_HAVE_ATTRIBUTE_ALWAYS_INLINE": "#define HWLOC_HAVE_ATTRIBUTE_ALWAYS_INLINE 1",
128    "#undef HWLOC_HAVE_ATTRIBUTE_COLD": "#define HWLOC_HAVE_ATTRIBUTE_COLD 1",
129    "#undef HWLOC_HAVE_ATTRIBUTE_CONST": "#define HWLOC_HAVE_ATTRIBUTE_CONST 1",
130    "#undef HWLOC_HAVE_ATTRIBUTE_DEPRECATED": "#define HWLOC_HAVE_ATTRIBUTE_DEPRECATED 1",
131    "#undef HWLOC_HAVE_ATTRIBUTE_FORMAT": "#define HWLOC_HAVE_ATTRIBUTE_FORMAT 1",
132    "#undef HWLOC_HAVE_ATTRIBUTE_HOT": "#define HWLOC_HAVE_ATTRIBUTE_HOT 1",
133    "#undef HWLOC_HAVE_ATTRIBUTE_MALLOC": "#define HWLOC_HAVE_ATTRIBUTE_MALLOC 1",
134    "#undef HWLOC_HAVE_ATTRIBUTE_MAY_ALIAS": "#define HWLOC_HAVE_ATTRIBUTE_MAY_ALIAS 1",
135    "#undef HWLOC_HAVE_ATTRIBUTE_NONNULL": "#define HWLOC_HAVE_ATTRIBUTE_NONNULL 1",
136    "#undef HWLOC_HAVE_ATTRIBUTE_NORETURN": "#define HWLOC_HAVE_ATTRIBUTE_NORETURN 1",
137    "#undef HWLOC_HAVE_ATTRIBUTE_NO_INSTRUMENT_FUNCTION": "#define HWLOC_HAVE_ATTRIBUTE_NO_INSTRUMENT_FUNCTION 1",
138    "#undef HWLOC_HAVE_ATTRIBUTE_PACKED": "#define HWLOC_HAVE_ATTRIBUTE_PACKED 1",
139    "#undef HWLOC_HAVE_ATTRIBUTE_PURE": "#define HWLOC_HAVE_ATTRIBUTE_PURE 1",
140    "#undef HWLOC_HAVE_ATTRIBUTE_SENTINEL": "#define HWLOC_HAVE_ATTRIBUTE_SENTINEL 1",
141    "#undef HWLOC_HAVE_ATTRIBUTE_UNUSED": "#define HWLOC_HAVE_ATTRIBUTE_UNUSED 1",
142    "#undef HWLOC_HAVE_ATTRIBUTE_WARN_UNUSED_RESULT": "#define HWLOC_HAVE_ATTRIBUTE_WARN_UNUSED_RESULT 1",
143    "#undef HWLOC_HAVE_ATTRIBUTE_WEAK_ALIAS": "#define HWLOC_HAVE_ATTRIBUTE_WEAK_ALIAS 1",
144    "#undef HWLOC_HAVE_ATTRIBUTE": "#define HWLOC_HAVE_ATTRIBUTE 1",
145    "#undef HWLOC_HAVE_CPU_SET_S": "#define HWLOC_HAVE_CPU_SET_S 1",
146    "#undef HWLOC_HAVE_CPU_SET": "#define HWLOC_HAVE_CPU_SET 1",
147    "#undef HWLOC_HAVE_DECL_FFSL": "#define HWLOC_HAVE_DECL_FFSL 1",
148    "#undef HWLOC_HAVE_DECL_FFS": "#define HWLOC_HAVE_DECL_FFS 1",
149    "#undef HWLOC_HAVE_DECL_STRCASECMP": "#define HWLOC_HAVE_DECL_STRCASECMP 1",
150    "#undef HWLOC_HAVE_DECL_STRNCASECMP": "#define HWLOC_HAVE_DECL_STRNCASECMP 1",
151    "#undef HWLOC_HAVE_FFSL": "#define HWLOC_HAVE_FFSL 1",
152    "#undef HWLOC_HAVE_FFS": "#define HWLOC_HAVE_FFS 1",
153    "#undef HWLOC_HAVE_LIBTERMCAP": "#define HWLOC_HAVE_LIBTERMCAP 1",
154    "#undef HWLOC_HAVE_LINUXIO": "#define HWLOC_HAVE_LINUXIO 1",
155    "#undef HWLOC_HAVE_PTHREAD_MUTEX": "#define HWLOC_HAVE_PTHREAD_MUTEX 1",
156    "#undef HWLOC_HAVE_SCHED_SETAFFINITY": "#define HWLOC_HAVE_SCHED_SETAFFINITY 1",
157    "#undef HWLOC_HAVE_STDINT_H": "#define HWLOC_HAVE_STDINT_H 1",
158    "#undef HWLOC_HAVE_SYSCALL": "#define HWLOC_HAVE_SYSCALL 1",
159    "#undef HWLOC_HAVE_X11_KEYSYM": "#define HWLOC_HAVE_X11_KEYSYM 1",
160    "#undef HWLOC_HAVE_X86_CPUID": "#define HWLOC_HAVE_X86_CPUID 1",
161    "#undef HWLOC_SIZEOF_UNSIGNED_INT": "#define HWLOC_SIZEOF_UNSIGNED_INT 4",
162    "#undef HWLOC_SIZEOF_UNSIGNED_LONG": "#define HWLOC_SIZEOF_UNSIGNED_LONG 8",
163    "#undef HWLOC_SYM_PREFIX_CAPS": "#define HWLOC_SYM_PREFIX_CAPS HWLOC_",
164    "#undef HWLOC_SYM_PREFIX": "#define HWLOC_SYM_PREFIX hwloc_",
165    "#undef HWLOC_SYM_TRANSFORM": "#define HWLOC_SYM_TRANSFORM 0",
166    "#undef HWLOC_USE_NCURSES": "#define HWLOC_USE_NCURSES 1",
167    "#undef HWLOC_VERSION_GREEK": "#define HWLOC_VERSION_GREEK \"\"",
168    "#undef HWLOC_VERSION_MAJOR": "#define HWLOC_VERSION_MAJOR 2",
169    "#undef HWLOC_VERSION_MINOR": "#define HWLOC_VERSION_MINOR 0",
170    "#undef HWLOC_VERSION_RELEASE": "#define HWLOC_VERSION_RELEASE 3",
171    "#undef HWLOC_VERSION": "#define HWLOC_VERSION \"2.0.3\"",
172    "#undef HWLOC_X86_64_ARCH": "#define HWLOC_X86_64_ARCH 1",
173    "#undef LT_OBJDIR": "#define LT_OBJDIR \".libs/\"",
174    "#undef PACKAGE_BUGREPORT": "#define PACKAGE_BUGREPORT \"http://github.com/open-mpi/hwloc/issues",
175    "#undef PACKAGE_NAME": "#define PACKAGE_NAME \"hwloc\"",
176    "#undef PACKAGE_STRING": "#define PACKAGE_STRING \"hwloc 2.0.3\"",
177    "#undef PACKAGE_TARNAME": "#define PACKAGE_TARNAME \"hwloc\"",
178    "#undef PACKAGE_URL": "#define PACKAGE_URL \"\"",
179    "#undef PACKAGE_VERSION": "#define PACKAGE_VERSION \"2.0.3\"",
180    "#undef PACKAGE": "#define PACKAGE \"hwloc\"",
181    "#undef SIZEOF_UNSIGNED_INT": "#define SIZEOF_UNSIGNED_INT 4",
182    "#undef SIZEOF_UNSIGNED_LONG": "#define SIZEOF_UNSIGNED_LONG 8",
183    "#undef SIZEOF_VOID_P": "#define SIZEOF_VOID_P 8",
184    "#undef STDC_HEADERS": "#define STDC_HEADERS 1",
185    "# undef _HPUX_SOURCE": "# define _HPUX_SOURCE 1",
186    "# undef _ALL_SOURCE": "# define _ALL_SOURCE 1",
187    "# undef _GNU_SOURCE": "# define _GNU_SOURCE 1",
188    "# undef _POSIX_PTHREAD_SEMANTICS": "# define _POSIX_PTHREAD_SEMANTICS 1",
189    "# undef _TANDEM_SOURCE": "# define _TANDEM_SOURCE 1",
190    "# undef __EXTENSIONS__": "# define __EXTENSIONS__ 1",
191    "#undef VERSION": "#define VERSION \"2.0.3\"",
192    "#undef _HPUX_SOURCE": "#define _HPUX_SOURCE 1",
193    "#undef hwloc_pid_t": "#define hwloc_pid_t pid_t",
194    "#undef hwloc_thread_t": "#define hwloc_thread_t pthread_t",
195}
196
197_INCLUDE_PRIVATE_HWLOC_AUTOIGEN_CONFIG_H_CUDA_SUBS = {
198    "#undef HAVE_CUDA": "#undef HAVE_CUDA 1",
199    "#undef HAVE_CUDA_H": "#undef HAVE_CUDA_H 1",
200    "#undef HAVE_CUDA_RUNTIME_API_H": "#undef HAVE_CUDA_RUNTIME_API_H 1",
201}
202
203_INCLUDE_PRIVATE_HWLOC_AUTOIGEN_CONFIG_H_LINUX_SUBS = {
204    "#undef HAVE_PROGRAM_INVOCATION_NAME": "#define HAVE_PROGRAM_INVOCATION_NAME 1",
205    "#undef HWLOC_LINUX_SYS": "#define HWLOC_LINUX_SYS 1",
206}
207
208_INCLUDE_PRIVATE_HWLOC_AUTOIGEN_CONFIG_H_LINUX_SUBS.update(_INCLUDE_PRIVATE_HWLOC_AUTOIGEN_CONFIG_H_COMMON_SUBS)
209
210_INCLUDE_PRIVATE_HWLOC_AUTOIGEN_CONFIG_H_CUDA_SUBS.update(_INCLUDE_PRIVATE_HWLOC_AUTOIGEN_CONFIG_H_LINUX_SUBS)
211
212template_rule(
213    name = "include_private_hwloc_autogen__config_h",
214    src = "include/private/autogen/config.h.in",
215    out = "include/private/autogen/config.h",
216    substitutions = if_cuda(
217        _INCLUDE_PRIVATE_HWLOC_AUTOIGEN_CONFIG_H_CUDA_SUBS,
218        if_false = _INCLUDE_PRIVATE_HWLOC_AUTOIGEN_CONFIG_H_LINUX_SUBS,
219    ),
220)
221
222template_rule(
223    name = "move_static_components_h",
224    src = "@org_tensorflow//third_party/hwloc:static-components.h",
225    out = "hwloc/static-components.h",
226    substitutions = {},
227)
228
229cc_library(
230    name = "hwloc",
231    srcs = [
232        "hwloc/base64.c",
233        "hwloc/bind.c",
234        "hwloc/bitmap.c",
235        "hwloc/components.c",
236        "hwloc/diff.c",
237        "hwloc/distances.c",
238        "hwloc/misc.c",
239        "hwloc/pci-common.c",
240        "hwloc/shmem.c",
241        "hwloc/static-components.h",
242        "hwloc/topology.c",
243        "hwloc/topology-hardwired.c",
244        "hwloc/topology-noos.c",
245        "hwloc/topology-synthetic.c",
246        "hwloc/topology-xml.c",
247        "hwloc/topology-xml-nolibxml.c",
248        "hwloc/traversal.c",
249        "include/hwloc/plugins.h",
250        "include/hwloc/shmem.h",
251        "include/private/autogen/config.h",
252        "include/private/components.h",
253        "include/private/debug.h",
254        "include/private/internal-components.h",
255        "include/private/misc.h",
256        "include/private/private.h",
257        "include/private/xml.h",
258    ] + select({
259        "@org_tensorflow//tensorflow:linux_x86_64": [
260            "hwloc/topology-linux.c",
261            "include/hwloc/linux.h",
262            "hwloc/topology-x86.c",
263            "include/private/cpuid-x86.h",
264        ],
265        "@org_tensorflow//tensorflow:linux_ppc64le": [
266            "hwloc/topology-linux.c",
267            "include/hwloc/linux.h",
268        ],
269        "@org_tensorflow//tensorflow:freebsd": [
270            "hwloc/topology-freebsd.c",
271            "hwloc/topology-x86.c",
272            "include/private/cpuid-x86.h",
273        ],
274        "//conditions:default": [],
275    }),
276    hdrs = [
277        "include/hwloc.h",
278        "include/hwloc/autogen/config.h",
279        "include/hwloc/bitmap.h",
280        "include/hwloc/deprecated.h",
281        "include/hwloc/diff.h",
282        "include/hwloc/distances.h",
283        "include/hwloc/export.h",
284        "include/hwloc/helper.h",
285        "include/hwloc/inlines.h",
286        "include/hwloc/rename.h",
287    ],
288    copts = COMMON_INCLUDE_COPTS + DISABLE_WARNINGS_COPTS + VAR_SETTINGS_COPTS,
289    features = [
290        "-parse_headers",
291        "-layering_check",
292    ],
293    includes = [
294        "hwloc",
295        "include",
296    ],
297    deps = [],
298)
299
300cc_binary(
301    name = "hwloc_print",
302    srcs = ["hwloc_print.cc"],
303    copts = COMMON_INCLUDE_COPTS,
304    deps = [
305        ":hwloc",
306    ],
307)
308