1if !HWLOC_HAVE_DARWIN 2all-local: needed useless 3else HWLOC_HAVE_DARWIN 4# Do nothing on Darwin because their default compiler doesn't like our gcc/cpp lines 5all-local: 6endif HWLOC_HAVE_DARWIN 7 8TEST_CPPFLAGS = 9if HWLOC_HAVE_LINUX 10TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_LINUX=1 11endif HWLOC_HAVE_LINUX 12if HWLOC_HAVE_LINUX_LIBNUMA 13TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_LINUX_LIBNUMA=1 14endif HWLOC_HAVE_LINUX_LIBNUMA 15if HWLOC_HAVE_SCHED_SETAFFINITY 16TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_GLIBC_SCHED=1 17endif HWLOC_HAVE_SCHED_SETAFFINITY 18if HWLOC_HAVE_LIBIBVERBS 19TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_OPENFABRICS_VERBS=1 20endif HWLOC_HAVE_LIBIBVERBS 21if HWLOC_HAVE_OPENCL 22TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_OPENCL=1 23endif HWLOC_HAVE_OPENCL 24if HWLOC_HAVE_CUDA 25TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_CUDA=1 26endif HWLOC_HAVE_CUDA 27if HWLOC_HAVE_CUDART 28TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_CUDART=1 29endif HWLOC_HAVE_CUDART 30if HWLOC_HAVE_NVML 31TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_NVML=1 32endif HWLOC_HAVE_NVML 33if HWLOC_HAVE_RSMI 34TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_RSMI=1 35endif HWLOC_HAVE_RSMI 36 37dirs: 38 mkdir -p include/hwloc/autogen include/private/autogen 39 40include/hwloc/autogen/config.h: dirs $(HWLOC_top_builddir)/include/hwloc/autogen/config.h 41 sed -e 's/^#define HWLOC_SYM_TRANSFORM 0/#define HWLOC_SYM_TRANSFORM 1/' \ 42 -e 's/^#define HWLOC_SYM_PREFIX hwloc_/#define HWLOC_SYM_PREFIX foobar_/' \ 43 -e 's/^#define HWLOC_SYM_PREFIX_CAPS HWLOC_/#define HWLOC_SYM_PREFIX_CAPS FOOBAR_/' \ 44 $(HWLOC_top_builddir)/include/hwloc/autogen/config.h > include/hwloc/autogen/config.h 45 46include/private/autogen/config.h: dirs $(HWLOC_top_builddir)/include/private/autogen/config.h 47 sed -e 's/^#define HWLOC_SYM_TRANSFORM 0/#define HWLOC_SYM_TRANSFORM 1/' \ 48 -e 's/^#define HWLOC_SYM_PREFIX hwloc_/#define HWLOC_SYM_PREFIX foobar_/' \ 49 -e 's/^#define HWLOC_SYM_PREFIX_CAPS HWLOC_/#define HWLOC_SYM_PREFIX_CAPS FOOBAR_/' \ 50 $(HWLOC_top_builddir)/include/private/autogen/config.h > include/private/autogen/config.h 51 52useless: 53 @echo "# Finding useless renaming" 54 @if grep '^#define' $(HWLOC_top_srcdir)/include/hwloc/rename.h \ 55 | awk '{print $$2}' \ 56 | egrep -v '(HWLOC_RENAME_H|HWLOC_MUNGE_NAME|HWLOC_NAME)' \ 57 | while read name ; do \ 58 grep $$name -rwH $(HWLOC_top_srcdir)/include/ \ 59 | grep -v rename.h: >/dev/null \ 60 || echo $$name; \ 61 done \ 62 | grep '' ; then false ; else true ; fi 63 @echo "# done" 64 65cpp.out: include/hwloc/autogen/config.h include/private/autogen/config.h 66 @echo "# Checking for warnings/errors during renaming" 67 @echo "# using $(TEST_CPPFLAGS)" 68 @$(CPP) -Werror $(CPPFLAGS) $(TEST_CPPFLAGS) -Iinclude -I$(HWLOC_top_srcdir)/include -I$(HWLOC_top_builddir)/include $(srcdir)/main.c >$@ 69 70# hwloc_uint64_t is ignored because it's always a typedef. 71# we have to manually concat a##b because some cpp let gcc do it (at least cpp 4.2.1 on OpenBSD 5.2). 72needed: cpp.out 73 @echo "# Finding needed renaming" 74 @if cat cpp.out \ 75 | sed -e 's/foobar_ ## hwloc_ ## /foobar_hwloc_/g' \ 76 | sed -e 's/FOOBAR_ ## hwloc_ ## /FOOBAR_hwloc_/g' \ 77 | grep -vw HWLOC_DEBUG_VERBOSE \ 78 | grep -vw hwloc_uint64_t \ 79 | egrep -i '(^| |\*)hwloc_' ; then false ; else true ; fi 80 @echo "# done" 81 82clean-local: 83 rm -rf include 84 85EXTRA_DIST = main.c 86