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