1# Copyright © 2009-2020 Inria. All rights reserved. 2# Copyright © 2009-2012 Université Bordeaux 3# Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved. 4# Copyright © 2011-2012 Oracle and/or its affiliates. All rights reserved. 5# See COPYING in top-level directory. 6 7AM_CFLAGS = $(HWLOC_CFLAGS) 8AM_CPPFLAGS = $(HWLOC_CPPFLAGS) -DHWLOC_INSIDE_LIBHWLOC 9AM_LDFLAGS = $(HWLOC_LDFLAGS) 10 11EXTRA_DIST = dolib.c 12 13# If we're in standalone mode, build the installable library. 14# Otherwise, build the embedded library. 15 16if HWLOC_BUILD_STANDALONE 17lib_LTLIBRARIES = libhwloc.la 18else 19noinst_LTLIBRARIES = libhwloc_embedded.la 20endif 21 22pluginsdir = @HWLOC_PLUGINS_DIR@ 23plugins_LTLIBRARIES = 24plugins_ldflags = -module -avoid-version $(HWLOC_DL_LIBS) $(HWLOC_LTDL_LIBS) 25# Beware that files are not rebuilt automatically when reconfiguring with different paths in these flags. 26AM_CPPFLAGS += -DHWLOC_PLUGINS_PATH="\"$(HWLOC_PLUGINS_PATH)\"" -DRUNSTATEDIR="\"$(HWLOC_runstatedir)\"" 27 28# Sources and ldflags 29 30sources = \ 31 topology.c \ 32 traversal.c \ 33 distances.c \ 34 memattrs.c \ 35 cpukinds.c \ 36 components.c \ 37 bind.c \ 38 bitmap.c \ 39 pci-common.c \ 40 diff.c \ 41 shmem.c \ 42 misc.c \ 43 base64.c \ 44 topology-noos.c \ 45 topology-synthetic.c \ 46 topology-xml.c \ 47 topology-xml-nolibxml.c 48ldflags = 49 50# Conditionally add to the sources and ldflags 51 52if HWLOC_HAVE_LIBXML2 53if HWLOC_XML_LIBXML_BUILD_STATIC 54sources += topology-xml-libxml.c 55else 56plugins_LTLIBRARIES += hwloc_xml_libxml.la 57hwloc_xml_libxml_la_SOURCES = topology-xml-libxml.c 58hwloc_xml_libxml_la_CFLAGS = $(AM_CFLAGS) $(HWLOC_LIBXML2_CFLAGS) -DHWLOC_INSIDE_PLUGIN 59hwloc_xml_libxml_la_LDFLAGS = $(plugins_ldflags) $(HWLOC_LIBXML2_LIBS) 60endif 61endif HWLOC_HAVE_LIBXML2 62 63if HWLOC_HAVE_PCIACCESS 64if HWLOC_PCI_BUILD_STATIC 65sources += topology-pci.c 66else 67plugins_LTLIBRARIES += hwloc_pci.la 68hwloc_pci_la_SOURCES = topology-pci.c 69hwloc_pci_la_CFLAGS = $(AM_CFLAGS) $(HWLOC_PCIACCESS_CFLAGS) -DHWLOC_INSIDE_PLUGIN 70hwloc_pci_la_LDFLAGS = $(plugins_ldflags) $(HWLOC_PCIACCESS_LIBS) 71endif 72endif HWLOC_HAVE_PCIACCESS 73 74if HWLOC_HAVE_OPENCL 75if HWLOC_OPENCL_BUILD_STATIC 76sources += topology-opencl.c 77else 78plugins_LTLIBRARIES += hwloc_opencl.la 79hwloc_opencl_la_SOURCES = topology-opencl.c 80hwloc_opencl_la_CFLAGS = $(AM_CFLAGS) $(HWLOC_OPENCL_CFLAGS) -DHWLOC_INSIDE_PLUGIN 81hwloc_opencl_la_LDFLAGS = $(plugins_ldflags) $(HWLOC_OPENCL_LIBS) $(HWLOC_OPENCL_LDFLAGS) 82endif 83endif HWLOC_HAVE_OPENCL 84 85if HWLOC_HAVE_CUDART 86if HWLOC_CUDA_BUILD_STATIC 87sources += topology-cuda.c 88else 89plugins_LTLIBRARIES += hwloc_cuda.la 90hwloc_cuda_la_SOURCES = topology-cuda.c 91hwloc_cuda_la_CFLAGS = $(AM_CFLAGS) $(HWLOC_CUDA_CFLAGS) -DHWLOC_INSIDE_PLUGIN 92hwloc_cuda_la_LDFLAGS = $(plugins_ldflags) $(HWLOC_CUDA_LIBS) 93endif 94endif HWLOC_HAVE_CUDART 95 96if HWLOC_HAVE_NVML 97if HWLOC_NVML_BUILD_STATIC 98sources += topology-nvml.c 99else 100plugins_LTLIBRARIES += hwloc_nvml.la 101hwloc_nvml_la_SOURCES = topology-nvml.c 102hwloc_nvml_la_CFLAGS = $(AM_CFLAGS) $(HWLOC_NVML_CFLAGS) -DHWLOC_INSIDE_PLUGIN 103hwloc_nvml_la_LDFLAGS = $(plugins_ldflags) $(HWLOC_NVML_LIBS) 104endif 105endif HWLOC_HAVE_NVML 106 107if HWLOC_HAVE_RSMI 108if HWLOC_RSMI_BUILD_STATIC 109sources += topology-rsmi.c 110else 111plugins_LTLIBRARIES += hwloc_rsmi.la 112hwloc_rsmi_la_SOURCES = topology-rsmi.c 113hwloc_rsmi_la_CFLAGS = $(AM_CFLAGS) $(HWLOC_RSMI_CFLAGS) -DHWLOC_INSIDE_PLUGIN 114hwloc_rsmi_la_LDFLAGS = $(plugins_ldflags) $(HWLOC_RSMI_LIBS) 115endif 116endif HWLOC_HAVE_RSMI 117 118if HWLOC_HAVE_GL 119if HWLOC_GL_BUILD_STATIC 120sources += topology-gl.c 121else 122plugins_LTLIBRARIES += hwloc_gl.la 123hwloc_gl_la_SOURCES = topology-gl.c 124hwloc_gl_la_CFLAGS = $(AM_CFLAGS) $(HWLOC_GL_CFLAGS) -DHWLOC_INSIDE_PLUGIN 125hwloc_gl_la_LDFLAGS = $(plugins_ldflags) $(HWLOC_GL_LIBS) 126endif 127endif HWLOC_HAVE_GL 128 129if HWLOC_HAVE_SOLARIS 130sources += topology-solaris.c 131sources += topology-solaris-chiptype.c 132endif HWLOC_HAVE_SOLARIS 133 134if HWLOC_HAVE_LINUX 135sources += topology-linux.c topology-hardwired.c 136endif HWLOC_HAVE_LINUX 137 138if HWLOC_HAVE_BGQ 139sources += topology-bgq.c 140endif HWLOC_HAVE_BGQ 141 142if HWLOC_HAVE_AIX 143sources += topology-aix.c 144ldflags += -lpthread 145endif HWLOC_HAVE_AIX 146 147if HWLOC_HAVE_HPUX 148sources += topology-hpux.c 149ldflags += -lpthread 150endif HWLOC_HAVE_HPUX 151 152if HWLOC_HAVE_WINDOWS 153sources += topology-windows.c 154endif HWLOC_HAVE_WINDOWS 155 156if HWLOC_HAVE_DARWIN 157sources += topology-darwin.c 158endif HWLOC_HAVE_DARWIN 159 160if HWLOC_HAVE_FREEBSD 161sources += topology-freebsd.c 162endif HWLOC_HAVE_FREEBSD 163 164if HWLOC_HAVE_NETBSD 165sources += topology-netbsd.c 166ldflags += -lpthread 167endif HWLOC_HAVE_NETBSD 168 169if HWLOC_HAVE_X86_CPUID 170sources += topology-x86.c 171endif HWLOC_HAVE_X86_CPUID 172 173if HWLOC_HAVE_GCC 174ldflags += -no-undefined 175endif HWLOC_HAVE_GCC 176 177 178if HWLOC_HAVE_WINDOWS 179# Windows specific rules 180 181LC_MESSAGES=C 182export LC_MESSAGES 183ldflags += -Xlinker --output-def -Xlinker .libs/libhwloc.def 184 185if HWLOC_HAVE_MS_LIB 186dolib$(EXEEXT): dolib.c 187 $(CC_FOR_BUILD) $< -o $@ 188.libs/libhwloc.lib: libhwloc.la dolib$(EXEEXT) 189 [ ! -r .libs/libhwloc.def ] || ./dolib$(EXEEXT) "$(HWLOC_MS_LIB)" $(HWLOC_MS_LIB_ARCH) .libs/libhwloc.def $(libhwloc_so_version) .libs/libhwloc.lib 190all-local: .libs/libhwloc.lib 191clean-local: 192 $(RM) dolib$(EXEEXT) 193endif HWLOC_HAVE_MS_LIB 194 195install-exec-hook: 196 [ ! -r .libs/libhwloc.def ] || $(INSTALL) .libs/libhwloc.def $(DESTDIR)$(libdir) 197if HWLOC_HAVE_MS_LIB 198 [ ! -r .libs/libhwloc.def ] || $(INSTALL) .libs/libhwloc.lib $(DESTDIR)$(libdir) 199 [ ! -r .libs/libhwloc.def ] || $(INSTALL) .libs/libhwloc.exp $(DESTDIR)$(libdir) 200endif HWLOC_HAVE_MS_LIB 201 202uninstall-local: 203 rm -f $(DESTDIR)$(libdir)/libhwloc.def 204if HWLOC_HAVE_MS_LIB 205 rm -f $(DESTDIR)$(libdir)/libhwloc.lib $(DESTDIR)$(libdir)/libhwloc.exp 206endif HWLOC_HAVE_MS_LIB 207 208# End of Windows specific rules 209endif HWLOC_HAVE_WINDOWS 210 211 212# Installable library 213 214libhwloc_la_SOURCES = $(sources) 215libhwloc_la_LDFLAGS = $(ldflags) -version-info $(libhwloc_so_version) $(HWLOC_LIBS) $(HWLOC_DL_LIBS) $(HWLOC_LTDL_LIBS) $(HWLOC_LDFLAGS) 216 217if HWLOC_HAVE_PLUGINS 218libhwloc_la_LDFLAGS += -export-dynamic 219endif 220 221# Embedded library (note the lack of a .so version number -- that 222# intentionally only appears in the installable library). Also note 223# the lack of _LDFLAGS -- all libs are added by the upper layer (via 224# HWLOC_EMBEDDED_LIBS). 225 226libhwloc_embedded_la_SOURCES = $(sources) 227 228# XML data (only install if we're building in standalone mode) 229 230if HWLOC_BUILD_STANDALONE 231xml_DATA = $(srcdir)/hwloc.dtd $(srcdir)/hwloc2.dtd $(srcdir)/hwloc2-diff.dtd 232xmldir = $(pkgdatadir) 233EXTRA_DIST += hwloc.dtd hwloc2.dtd hwloc2-diff.dtd 234endif 235 236DISTCLEANFILES = static-components.h 237 238if HWLOC_HAVE_PLUGINS 239check_LTLIBRARIES = hwloc_fake.la 240hwloc_fake_la_SOURCES = topology-fake.c 241hwloc_fake_la_LDFLAGS = $(plugins_ldflags) -rpath /nowhere # force libtool to build a shared-library even it's check-only 242endif 243